哪位巨佬能帮忙找哪里RE了

P2502 [HAOI2006] 旅行

@[李恪佳](/user/63931) 非void类函数都是要返回的
by Dimly_dust @ 2020-07-20 16:28:16


@[Dimly_dust](/user/316896) 谢谢,改了,但还WA了两个点,你能帮我看看吗 ```cpp #include<cstdio> #include<iostream> #include<algorithm> using namespace std; int n,m,s,t,x1,y1,x2,y2,mmin=2147483647,fa[5005]; struct node { int x,y,v; }a[5005]; int find(int x) { if(fa[x]==x)return x; else return fa[x]=find(fa[x]); } void bcj(int x,int y) { int x1=find(x),y1=find(y); if(x1!=y1)fa[x1]=y1; } bool pd(int x,int y) { int x1=find(x),y1=find(y); if(x1!=y1)return true; else return false; } int gcd(int x,int y) { while(x%y) { int z=x%y; x=y; y=z; } return y; } bool cmp(node x,node y) { return x.v<y.v; } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].v); scanf("%d%d",&s,&t); sort(a+1,a+m+1,cmp); for(int i=1;i<m;i++) { int ok=0; for(int j=1;j<=n;j++) fa[j]=j; bcj(a[i].x,a[i].y); for(int j=i;j<=m;j++) { if(pd(a[j].x,a[j].y))bcj(a[j].x,a[j].y); if(!pd(s,t)){ok=j;break;} } if(ok!=0&&a[ok].v-a[i].v<mmin) { x1=a[i].v; y1=a[ok].v; mmin=a[ok].v-a[i].v; } } if(mmin==2147483647)cout<<"IMPOSSIBLE"; else { x2=x1/gcd(x1,y1); y2=y1/gcd(x1,y1); if(y2%x2==0)cout<<y2/x2; else cout<<y2<<"/"<<x2; } } ```
by LikeJ @ 2020-07-20 16:32:22


@[Dimly_dust](/user/316896) 我们机房有个巨佬帮我改AC了 ```cpp #include<cstdio> #include<iostream> #include<algorithm> using namespace std; int n,m,s,t,x1,y1,x2,y2,fa[5005]; double mmin=2147483647; struct node { int x,y,v; }a[5005]; int find(int x) { if(fa[x]==x)return x; else return fa[x]=find(fa[x]); } void bcj(int x,int y) { int x1=find(x),y1=find(y); if(x1!=y1)fa[x1]=y1; } bool pd(int x,int y) { int x1=find(x),y1=find(y); if(x1!=y1)return true; else return false; } int gcd(int x,int y) { while(x%y) { int z=x%y; x=y; y=z; } return y; } bool cmp(node x,node y) { return x.v<y.v; } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].v); scanf("%d%d",&s,&t); sort(a+1,a+m+1,cmp); for(int i=1;i<=m;i++) { int ok=0; for(int j=1;j<=n;j++) fa[j]=j; bcj(a[i].x,a[i].y); for(int j=i;j<=m;j++) { if(pd(a[j].x,a[j].y))bcj(a[j].x,a[j].y); if(!pd(s,t)){ok=j;break;} } if(ok!=0&&double(a[ok].v)/a[i].v<mmin) { x1=a[i].v; y1=a[ok].v; mmin=double(a[ok].v)/a[i].v; } } if(mmin==2147483647)cout<<"IMPOSSIBLE"; else { x2=x1/gcd(x1,y1); y2=y1/gcd(x1,y1); if(x2==1||y2==1)cout<<y2/x2; else cout<<y2<<"/"<<x2; } } ``` 谢谢你们
by LikeJ @ 2020-07-20 16:44:14


@[李恪佳](/user/63931) Ok
by Dimly_dust @ 2020-07-20 16:44:48


谢谢大家
by LikeJ @ 2020-07-20 16:53:19


|