| ||||||||||
| 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 <iostream>
using namespace std;
#define MAXN 501
#define inf 1000000000
typedef int elem_t;
int bellman_ford(int n, elem_t mat[][MAXN], int s, elem_t min[MAXN], int pre[MAXN])
{
int v[MAXN], i, j, k, tag;
for (i = 0; i < n; i++)
min[i] = inf, v[i] = 0, pre[i] = -1;
for (min[s] = 0, j = 0; j < n; j++)
{
for (k = -1, i = 0; i < n; i++)
if (!v[i] && (k == -1 || min[i] < min[k]))
k = i;
for (v[k] = 1, i = 0; i < n; i++)
if (!v[i] && mat[k][i] >= 0 && min[k] + mat[k][i] < min[i])
min[i] = min[k] + mat[pre[i] = k][i];
}
for (tag = 1, j = 0; tag && j <= n; j++)
for (tag = i = 0; i < n; i++)
for (k = 0; k < n; k++)
if (min[k] + mat[k][i] < min[i])
min[i] = min[k] + mat[pre[i] = k][i], tag = 1;
return j <= n;
}
int main()
{
int map[MAXN][MAXN];
int n;
int min[MAXN];
int pre[MAXN];
int i, j;
int n1,m1,w1,s,e,t;
cin >> n;
for(i = 0 ;i < n ;i ++)
{
memset(map,0,sizeof(map));
cin>>n1>>m1>>w1;
for(j = 0; j < m1; j++)
{
cin>>s>>e>>t;
map[s-1][e-1] = t;
}
for(j = 0; j < w1; j++)
{
cin>>s>>e>>t;
map[s-1][e-1] = -t;
}
bool con = false;
for(j = 0 ;j < n1 ;j ++)
{
if(!bellman_ford(n1, map, j, min, pre))
{
cout<<"YES"<<endl;
con = true;
break;
}
}
if(!con)
{
cout<<"NO"<<endl;
}
}
return 0;
}
//测试数据没问题啊。。。
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator