#include <cstdio>
#include <algorithm>
#define N 1002
#define M 2002
using namespace std;
const int inf = 300000000;
int first[N], d[N ];
int next[M], u[M], v[ M ], w[M ];
void read_graph(int n, int m )
{
for (int i = 0;i < n; i++)first[i] = -1;
for (int e = 0; e < m; e++)
{
scanf("%d %d %d", &u[e], &v[e], &w[e]);
next[e] = first[u[e]];
first[u[e]] = e;
}
}
bool bellman_ford(int s, int n, int m)
{
for (int i = 0;i < n; i++)d[i] = inf;
d[s] = 0;
for (int k = 0; k < n - 1; k++)
for (int i = 0;i < m; i++)
{
d[v[i]] = min(d[v[i]], d[u[i]] + w[i]);
}
for (int e = 0; e < m; e++)
if (d[v[e]] > d[u[e]] + w[e]) return false;
return true;
}
int main()
{
int t, n, m ;
scanf("%d", &t);
while (t--)
{
scanf("%d %d", &n, &m);
read_graph(n, m ) ;
bool ans = bellman_ford(0, n, m);
if (!ans)puts("possible");
else printf("not possible");
}
return 0;
}
uva_558 Wormholes (spfa 或 bellman_ford)
最新推荐文章于 2019-11-23 23:42:10 发布