Canadian Computing Competition: 2017 Stage 1, Senior #4
The city of Watermoo has buildings numbered
The municipal government of Watermoo is currently operating a valid plan of
Additionally, researchers at the University of Watermoo have developed an experimental pipe enhancer which you can use on one pipe of your choice. It will reduce that pipe's cost from
The city wants you to minimize the cost of the plan, and they want you to do it quickly. Every day, the city will allow you to activate one pipe, and deactivate another pipe. How many days do you need to make the set of active pipes form a valid plan, whose cost is minimum among all valid plans and all choices of enhanced pipe?
Note that it is possible that the plan becomes invalid while you are working, but by the end it should be a valid plan.
Input Specification
The first line will contain the integers
It is guaranteed that there is at most one pipe connecting any two buildings and no pipe connects a building to itself.
For 3 of the 17 available marks,
For an additional 5 of the 17 available marks,
For an additional 3 of the 17 available marks,
For an additional 2 of the 17 available marks,
Note: The final 2 of the 17 available marks consists of test cases made by
and and were not present on the CCC. These test cases were made in response to the initial incorrect official solution presented.Output Specification
Output one integer on a single line, the minimum number of days to complete this task. If the initial valid plan is already an optimal plan, then output
Sample Input 1
4 4 0
1 2 1
2 3 2
3 4 1
4 1 1
Sample Output 1
1
Explanation for Sample Output 1
Note that it does not matter which pipe you use the pipe enhancer on because
On the first day, you should deactivate the pipe from building
Sample Input 2
5 6 2
1 2 5
2 3 5
1 4 5
4 5 5
1 3 1
1 5 1
Sample Output 2
2
Explanation for Sample Output 2
One solution using the minimum number of days is to first use the pipe enhancer on the pipe from building
Additionally, there are no solutions where you use the pipe enhancer on the pipe from building
Sample Input 3
4 4 0
1 2 715827882
2 3 715827882
3 4 715827882
4 1 715827884
Sample Output 3
0
Explanation for Sample Output 3
The initial valid plan is already an optimal plan. Be careful of integer overflow when implementing your solution.
Comments
Can Prim's be used to solve this?
Is DFS fast enough to pass?(for python or c++)
This comment is hidden due to too much negative feedback. Show it anyway.
To find the cycles when doing kruskals. I did DFS and getting TLE on the last few test cases.
When doing Kruskals, DFS is not needed to detect cycles, the Disjoint-Set data structure is more efficient.
https://en.wikipedia.org/wiki/Disjoint-set_data_structure#:~:text=In%20computer%20science%2C%20a%20disjoint,a%20set%20into%20disjoint%20subsets.
https://www.geeksforgeeks.org/kruskals-minimum-spanning-tree-algorithm-greedy-algo-2/
CopyPastingFromGithubIsWrong just because this is your username I don't think you can use the editorial ... https://dmoj.ca/src/1117801 and I don't think "just seeing if it works" is a valid reason to use it. I'm pretty sure it would work since it's the editorial???
I agree, copying code is an egregious crime - I can't believe anyone would so such a thing...
If you only use the pipe enhancer, then does it still count as a day?
This comment is hidden due to too much negative feedback. Show it anyway.
Help on last sample case. How is it a valid plan for the last sample case? Doesnt the pipe from 4 to 1 need to be removed?
As you can see, the first three form a perfectly valid plan.
New cases by d and r3mark have been added as a 2 point subtask. All submissions have been rejudged.
This comment is hidden due to too much negative feedback. Show it anyway.
The second edit is because the number of cases increased from 1
This comment is hidden due to too much negative feedback. Show it anyway.
Guys, this post is from over a year ago... don't beat a dead horse.