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> #include <memory.h> #define maxn 1000000000; using namespace std; typedef struct { long p,l,x; long t[101],v[101]; }V; long n,m,ans,dist[101]; V map[101]; bool finish[101]; void init() { int i,j; cin>>m>>n; for(i=1;i<=n;i++) { cin>>map[i].p>>map[i].l>>map[i].x; for(j=1;j<=map[i].x;j++) cin>>map[i].t[j]>>map[i].v[j]; } ans=maxn; } void dijkstra() { long i,j,k,min,d,r; for(r=1;r<=n;r++) if(map[r].l-map[1].l>=0&&map[r].l-map[1].l<=m) { memset(finish,false,sizeof(finish)); for(i=1;i<=n;i++) dist[i]=maxn; dist[1]=map[1].p; finish[1]=true; for(i=1;i<=map[1].x;i++) if(map[r].l-map[map[1].t[i]].l<=m&&map[r].l-map[map[1].t[i]].l>=0) dist[map[1].t[i]]=dist[1]-map[1].p+map[1].v[i]+map[map[1].t[i]].p; for(k=1;k<n;k++) { j=1; min=maxn; for(i=1;i<=n;i++) if(!finish[i]&&dist[i]<min) { min=dist[i]; j=i; } finish[j]=true; for(i=1;i<=map[j].x;i++) if(map[r].l-map[map[j].t[i]].l<=m&&(!finish[map[j].t[i]])&&map[r].l-map[map[j].t[i]].l>=0) { d=dist[j]-map[j].p+map[j].v[i]+map[map[j].t[i]].p; if(dist[map[j].t[i]]>d) dist[map[j].t[i]]=d; } } for(i=1;i<=n;i++) if(ans>dist[i]) ans=dist[i]; } } void print() { cout<<ans<<endl; } int main() { init(); dijkstra(); print(); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator