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 |
d从小的方向松弛为啥总是wa?????#include<iostream> using namespace std; #define Max 10002 int ta,tb,a[Max],b[Max],c[Max],sa[Max],sb[Max],sc[Max]; int d[1002]; int n,maxa,maxb; void bellman() { int k=0,i; bool used=false; memset(d,0,sizeof(d)); d[n]=-1; while(!used) { k++; if(k>=n) break; used=true; for(i=0;i<ta;i++) { if(d[b[i]]<d[a[i]]) d[b[i]]=d[a[i]],used=false; if(d[b[i]]<d[a[i]]+c[i]) { d[b[i]]=d[a[i]]+c[i]; used=false; } } for(i=0;i<tb;i++) { if(d[sb[i]]<d[sa[i]]) d[sa[i]]=d[sb[i]],used=false; if(d[sb[i]]>d[sa[i]]+sc[i]) { d[sa[i]]=d[sb[i]]-sc[i]; used=false; } } for(i=2;i<=n;i++) if(d[i]<d[i-1]) { used=false; d[i]=d[i-1]; } } if(d[n]<0) cout<<-2<<endl; else if(k>=n) cout<<-1<<endl; else cout<<d[n]-d[1]<<endl; } int main() { int i; scanf("%d%d%d",&n,&ta,&tb); for(i=0;i<ta;i++) { scanf("%d%d%d",&a[i],&b[i],&c[i]); if(a[i]>b[i]) swap(a[i],b[i]); //maxa=b[i]>maxa?b[i]:maxa; } for(i=0;i<tb;i++) { scanf("%d%d%d",&sa[i],&sb[i],&sc[i]); if(sa[i]>sb[i]) swap(sa[i],sb[i]); // maxb=b[i]>maxb?b[i]:maxb; } bellman(); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator