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 |
差分约束也超时啊。。。请大家指导。。。谢谢#include<cstdio> #define INF 200000000 struct EDGE { int st,ed,val; }edge[1000000]; int dist[50002]; int n,result,max,min,nv; bool inG[50002]; int getmin(int a,int b) { if(a<b) return a; else return b; } int getmax(int a,int b) { if(a>b) return a; else return b; } void BellmanFord() { int v,e,s=min; for(v=min;v<max;v++) { dist[v]=-INF; edge[n].st=v; edge[n].ed=v+1; edge[n].val=0; n++; edge[n].st=v+1; edge[n].ed=v; edge[n].val=-1; n++; } dist[s]=0; bool over=false; for(v=0;v<max-min&&!over;v++) { over=true; for(e=0;e<n;e++) if(dist[edge[e].st]!=-INF&&dist[edge[e].ed]<dist[edge[e].st]+edge[e].val) { dist[edge[e].ed]=dist[edge[e].st]+edge[e].val; over=false; } } result=dist[max]; } int main() { int i; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d%d%d",&edge[i].st,&edge[i].ed,&edge[i].val); edge[i].ed++; max=getmax(max,edge[i].ed); min=getmin(min,edge[i].st); } BellmanFord(); printf("%d\n",result); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator