| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
大牛帮忙看看,为什么wa呀!#include<stdio.h>
#define MAX 1000000
int n;
int val[10001];
int g[5001][5001];
int Bellman()
{
int i,j,k;
bool flag;
// memset(val,MAX,sizeof(val));
for(i = 1;i <= n;i++) val[i] = MAX;
val[1] = 0;
for(k = 1;k < n;k++)
{
flag = 0;
for(i = 1;i <= n;i++)
{
for(j = 1;j <= n;j++)
{
if(g[i][j] && val[j] > val[i] + g[i][j])
{
val[j] = val[i] + g[i][j];
flag = 1;
}
}
}
if(!flag) break;
// return 0;
}
// printf("flag = %d\n",flag);
for(i = 1;i <= n;i++)
{
for(j = 1;j <= n;j++)
{
if(g[i][j] && val[j] > val[i] + g[i][j])
return 1;
}
}
return 0;
}
int main()
{
int i,j,t,m,w,s,e,d;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&m,&w);
for(i = 1;i <= n;i++)
for(j = 1;j <= n;j++)
g[i][j] = 0;
for(i = 1;i <= m;i++)
{
scanf("%d%d%d",&s,&e,&d);
g[s][e] = d;
g[e][s] = d;
}
for(i = 1;i <= w;i++)
{
scanf("%d%d%d",&s,&e,&d);
g[s][e] = -1*d;
}
if(Bellman())
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
/*
Sample Input
2
3 3 1
1 2 2
1 3 4
2 3 1
3 1 3
3 2 1
1 2 3
2 3 4
3 1 8
Sample Output
NO
YES
*/
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator