零分求助
查看原帖
零分求助
503129
sine1111楼主2021/7/8 12:42

虽然但是,样例能过。

#include<bits/stdc++.h>
using namespace std;
int N=2e5+10;
int n,m,ans,cnt,o,f[200010],i;	
struct ln{
	int s,e,v;
}l[200010];
int find(int x){
	if(x==f[x]) return x;
	else return f[x]=find(f[x]);
}
bool cmp(ln a,ln b){
	return a.v<b.v;
}
void k(){
	sort(l+1,l+1+m,cmp);
	for(int i=1;i<=m;i++){
	    int a=find(l[i].s);
	    int b=find(l[i].e);
	    if(a==b) return;
	    else {
	      f[a]=b;
	      ans+=l[i].v;
	      cnt++;
		}
	}

} 
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)f[i]=i;
	for(int i=1;i<=m;i++)cin>>l[i].s>>l[i].e>>l[i].v; //读入 
    k();            
	int u=f[1];                                 
    for(int i=2;i<=m;i++){
       int y=find(i) ;
       if(y==u){
	   cout<<"orz";
	   o=1;
	   break;
	   }	   
	}
    if(o==0) cout<<ans;

} 
2021/7/8 12:42
加载中...