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 |
Re:不知道WA了多少次了,求大神In Reply To:不知道WA了多少次了,求大神 Posted by:1265170408 at 2016-05-17 20:22:19 > #include<cstdio> > #include<cstring> > using namespace std; > const int maxn=105; > int n,m,s; > double cost[maxn][maxn],dist[maxn],d[maxn][maxn],v; > int vis[maxn][maxn]; > int main() > { scanf("%d %d %d %lf\n",&n,&m,&s,&v); > memset(dist,0,sizeof(dist)); > memset(vis,0,sizeof(vis)); > for (int i=1; i<=m; ++i) > { > int x,y; > scanf("%d %d",&x,&y); > scanf("%lf %lf %lf %lf\n",&d[x][y],&cost[x][y],&d[y][x],&cost[y][x]); > vis[x][y]=1; vis[y][x]=1; > } > int vis1[maxn]; > int sum[maxn]; > memset(sum,0,sizeof(sum)); > memset(vis1,0,sizeof(vis1)); > int head=0,tail=1; > int q[maxn]; > memset(q,0,sizeof(q)); > q[1]=s; vis1[s]=1; dist[s]=v; > while (head<tail) > { > head++; > int x=q[head]; > vis1[x]=0; > sum[x]++; > if (sum[x]>n) break; > for (int i=1; i<=n; ++i) > if (vis[x][i] && dist[i]<(dist[x]-cost[x][i])*d[x][i]) > { > dist[i]=(dist[x]-cost[x][i])*d[x][i]; > if (!vis1[i]) > { > tail++; > q[tail]=i; > vis1[i]=1; > } > } > } > if (dist[s]>v) printf("%s\n","YES"); > else printf("%s\n","NO"); > } 你试一试我的代码: #include<cstdio> #include<cstring> const int N=220; struct node{ int x,y; double yo,hu; }; node data[N]; int n,m,s,a,b; double v,ay,al,by,bl,f[N]; bool f1; int main(){ freopen("poj1860.in","r",stdin); scanf("%d%d%d%lf",&n,&m,&s,&v); //printf("%d %d %d %lf\n",n,m,s,v); for(int i=1;i<=m;++i){ scanf("%d%d%lf%lf%lf%lf",&a,&b,&ay,&al,&by,&bl); //printf("%d %d %lf %lf %lf %lf\n",a,b,ay,al,by,bl); data[2*i-1].x=a;data[2*i-1].y=b;data[2*i-1].yo=ay;data[2*i-1].hu=al; data[2*i].x=b;data[2*i].y=a;data[2*i].yo=by;data[2*i].hu=bl; /* printf("%d %d %lf %lf\n",data[2*i-1].x,data[2*i-1].y,data[2*i-1].yo,data[2*i-1].hu); printf("%d %d %lf %lf\n",data[2*i].x,data[2*i].y,data[2*i].yo,data[2*i].hu); */ } for(int i=1;i<=n;++i) f[i]=0x7fffffff*(-1); f[s]=v; //printf("%lf %lf",f[2],f[1]); for(int i=1;i<n;++i){ f1=false; for(int j=1;j<=2*m;++j){ if((f[data[j].x]-data[j].hu)*data[j].yo>f[data[j].y] and f[data[j].x]!=0x7fffffff*(-1)){ f[data[j].y]=(f[data[j].x]-data[j].hu)*data[j].yo; f1=true; } } if(!f1) break; } f1=false; for(int j=1;j<=2*m;++j){ if((f[data[j].x]-data[j].hu)*data[j].yo>f[data[j].y] and f[data[j].x]!=0x7fffffff*(-1)){ f[data[j].y]=(f[data[j].x]-data[j].hu)*data[j].yo; f1=true; } } if(f1) printf("YES\n"); else printf("NO\n"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator