2019 ICPC南京网络赛 H题(SPFA/Bellman-Ford)
题意 给定六条边,让你设定他们的权值,加进去后,图不要产生负环。 输出六条边的边权。 ˼· 对于第一条边,u v,我求v到u的最短路dis,那么u v的边权即为dis。 将u v这条边加入图中。 对于第二条边,重复上述操作即可。 这样就能保证图中不会产生负环。 不能用 Dijkstra 算法,虽然没有负环,但是有负边就不能用 Dijkstra 用 SPFA 或者 Bellman - Ford 才能处理负边。 代码 # include < bits / stdc ++. h > using namespace std ; typedef long long ll ; const int maxn = 3e2 + 10 ; const int INF = 0x3f3f3f3f ; struct Edge { int v , cost ; Edge ( int _v = 0 , int _cost = 0 ) : v ( _v ) , cost ( _cost ) { } } ; vector < Edge > E [ maxn ] ; bool vis [ maxn ] ; int dist [ maxn ] ; int cnt [ maxn ] ; bool SPFA ( int n , int start ) { memset ( vis , false , sizeof (