#include<bits/stdc++.h>
using namespace std;
int fa[20005],n,m;int s,t;
struct NODE{
int x,y,w;
}q[20010];
bool cmp(NODE x,NODE y){
return x.w < y.w;
}
int f(int x){
if(fa[x]==0)
return x;
fa[x]=f(fa[x]);
return fa[x];
}
int main(){
cin >> n >> m >> s >> t;
for(int i = 1; i<=m; i++){//输入
cin >> q[i].x;cin >> q[i].y;cin >> q[i].w;
}
sort(q+1,q+m+1,cmp);
for(int i = 1; i <= m ;i++){
int t = f(q[i].x),tt = f(q[i].y);
if(t!=tt)
fa[t]=tt;//合并
if(f(s)==f(t)){
cout<<q[i].w<<endl;
return 0;
}
}
return 0;
}
这是WA的代码
#include<bits/stdc++.h>
using namespace std;
int n,m,s,t,fa[20001];
struct each{
int x,y,w;
}q[20001];
bool cmp(each x,each y){
return x.w<y.w;
}
int f(int x){
if(fa[x]==0)
return x;
fa[x]=f(fa[x]);
return fa[x];
}
int main(){
cin >> n >> m >> s >> t;
for(int i=1;i<=m;i++){
cin >>q[i].x;cin >> q[i].y;cin >>q[i].w;
}
sort(q+1,q+m+1,cmp);
for(int i=1;i<=m;i++){
int X=f(q[i].x),Y=f(q[i].y);
if(X!=Y)
fa[X]=Y;
if(f(s)==f(t)){
cout<<q[i].w<<endl;
return 0;
}
}
return 0;
}
这是AC代码
为什么?这几乎一摸一样