题意:给你一个有向带负权图, 问其中存不存在负环。
思路:用bellman-ford算法松弛n-1次,然后在第n次时判断是不是还有点能松弛,若还能松弛则说明存在负环。
代码如下:
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define INF 0x7fffffff11 #define LEN 510112 #define ll long long13 using namespace std;14 15 ll n, m, u[LEN], v[LEN], w[LEN], dis[LEN];16 17 int main()18 {19 // freopen("in.txt", "r", stdin);20 int T;21 scanf("%d", &T);22 while(T--){23 scanf("%lld%lld", &n, &m);24 for(int i=0; i dis[x]+w[j])dis[y] = dis[x]+w[j];33 }34 }35 int ans = 0;36 for(int i=0; i dis[x]+w[i]){ans = 1;break;}39 }40 if(ans)printf("possible\n");41 else printf("not possible\n");42 }43 return 0;44 }