题目链接
解题方法:找割桥
题目分析
题目大意
曹操在长江上建立了一些点,点之间有一些边连着。如果这些点构成的无向图变成了连通图,那么曹操就无敌了。刘备为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥。但是诸葛亮把所有炸弹都带走了,只留下一枚给刘备。所以刘备只能炸一条桥。
题目给出n,m。表示有n个点,m条桥。
接下来的m行每行给出a,b,c,表示a点和b点之间有一条桥,而且曹操派了c个人去守卫这条桥。
现在问刘备最少派多少人去炸桥。
如果无法使曹操的点成为多个连通图,则输出-1.
解析
典型的找割桥的问题,但是比较坑的是会有重边,我的处理方法是,如果这个桥之前出现过,就将这个桥上的人数赋值为INF
,这样建图的时候就可以保证答案不会在这个有重边的桥上取,如果不是桥的话,反正也不会去判断要不要取,所以赋值为INF
也无所谓了。有一个小trick,当桥上没有人的话,需要派一个兵去炸。如果本来就是多个连通块的话,则不需要派人去炸,因为曹操不可能无敌。
代码
1 | //HDU 4738 |