題意:輸入N, ML, MD, N默示有N個牛按1-N排成一排,ML,默示有ML行,每行輸入A, B, D默示A牛和B牛最遠間隔為D, MD默示有MD行,每行輸入A,B,D默示A牛和B來間隔為D,求滿足所有前提的1-N的最大間隔。
比較簡單的差分約束,這個周周賽的A題
#include#include #include #include #include #include #include const int N = 210; const int maxn = 1010; const int maxm = 21000; #define FOR(i,a,b) for(int i=a;i dis[edge[j].u] + edge[j].w) { dis[edge[j].v] = dis[edge[j].u] + edge[j].w; flag = 1; } } if(!flag) break; } if(flag==1) return -1; else if(dis[t]==INF) return -2; else return dis[t]; } int main() { int u,v,w,a,b; while(scanf(%d%d%d,&n,&a,&b)!=EOF) { cnt=0; FOR(i,0,a) { scanf(%d%d%d,&u,&v,&w); add(u,v,w); } FOR(i,0,b) { scanf(%d%d%d,&u,&v,&w); add(v,u,-w); } int ans = Bellman(1,n); cout<