题目链接;
http://poj.org/problem?id=3259
题目大意:
给出N个图,每个图有两种边,一个是无向的正权边,一种是有向的负权边,保证所给的图为连通图,求是否存在负环。
解题过程:
刚开始以为给出的图不连通,然后用Floyd超时,后来问了学长,翻了下POJ的讨论,发现大家都是默认为图连通做的……
然后敲了下Bellman和SPFA判断负环就A了。
题目分析:
因为保证图联通,那么可以假设从任意一点出发。
Bellman:如果松弛操进行N次依然可以松弛,那么存在负环。
SPFA:如果一个点入队次数大于等于N次,那么处在负环。
AC代码:
Bellman:
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long LL;
struct Node {
int u, v, w;
}edge[2500*10];
LL dist[1123];
int main() {
int f;
scanf("%d", &f);
while (f--) {
int n, m, w;
scanf("%d %d %d"<