| ||||||||||
| 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 | |||||||||
你写的。。。。。就是bellman-fordIn Reply To:终于AC了!!!附代码!如果大家能给意见,在下感激不尽! Posted by:xiangrui at 2010-03-20 01:13:57 > 本人很菜,看讨论里说的算法都不太明白...把代码贴出来不是觉得自己算法好,而是希望有人可以告诉我应该怎么用讨论里说的spfa或者bellman-ford算法.谢谢各位的指正!!
>
>
>
> #include<iostream>
> using namespace std;
> #define max_n 9999999
> int d[6000],sp[20000];
> int count,n;
> bool flag;
> struct edge
> {
> int l,r,t;
> }e[6000];
> bool search(int v)
> {
> int i,j,k,t=0,temp=-1;
> bool jud;
> for(i=0;i<v;i++)
> d[i]=max_n;
> d[1]=0;
> for(;;)
> {
> jud=false;
> for(j=0;j<v;j++)
> {
> if(d[e[j].r]>d[e[j].l]+e[j].t)
> {
> d[e[j].r]=d[e[j].l]+e[j].t;jud=true;
>
> }
> }
> if(d[1]<0)
> return true;
> if(!jud)
> return false;
> }
>
>
>
> return false;
> }
> int main()
> {
> int w,m,f,i,j;
> //freopen("d:\\1.txt","r",stdin);
> cin >> f;
> while(f--)
> {
> cin >> n >> m >> w;j=0;
> for(i=0;i<m;i++)
> {
> cin >> e[j].l >> e[j].r >> e[j].t;j++;
> e[j].l=e[j-1].r;e[j].r=e[j-1].l;e[j].t=e[j-1].t;j++;
> }
> for(i=0;i<w;i++)
> {
> cin >> e[j].l >> e[j].r >> e[j].t;
> e[j].t=-e[j].t;j++;
> }
> flag=search(j);
> if(flag)
> cout << "YES" << endl;
> else
> 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