求助
  • 板块P1396 营救
  • 楼主AFO_Song
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/7/5 17:15
  • 上次更新2023/11/3 11:28:29
查看原帖
求助
575879
AFO_Song楼主2023/7/5 17:15
#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代码

为什么?这几乎一摸一样

2023/7/5 17:15
加载中...