Prim(3TLE+1WA)
#include<bits/stdc++.h>
using namespace std;
const int maxn=2*1e5,maxm=5000*2+19;
int n,m;
struct P{
int n,t,v;
}edge[maxn];
struct Q{
int a;
Q(){}
Q(int b){a=b;}
};
bool operator<(const Q a,const Q b){
return edge[a.a].v>edge[b.a].v;
}
int len=0;
int head[maxm];
bool vis[maxn];
int work(){
priority_queue<Q> p;
int ans=0;
int cnt=0;
p.push(Q(0));
while(!p.empty()){
int num=p.top().a;
p.pop();
if(vis[edge[num].t]) continue;
vis[edge[num].t]=1;
ans+=edge[num].v;
cnt++;
for(int i=head[edge[num].t];i;i=edge[i].n){
if(vis[edge[i].t]) continue;
// cout<<edge[num].t<<" "<<edge[i].t<<" "<<cnt<<" "<<ans<<endl;
p.push(Q(i));
}
}
if(cnt<n) return 0;
return ans;
}
void build(int a,int b,int c){
len++;
edge[len].t=b;
edge[len].v=c;
edge[len].n=head[a];
head[a]=len;
}
void read(){
edge[0]={0,1,0};
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int f,t,v;
scanf("%d%d%d",&f,&t,&v);
build(f,t,v);
build(t,f,v);
}
int ans=work();
if(!ans) cout<<"ore";
else cout<<ans;
}
int main(){
// freopen("P3366_1.in","r",stdin);
read();
}
Kruskal(AC)
#include<bits/stdc++.h>
using namespace std;
const int maxn=2*1e5;
int n,m;
struct P{
int f,t,v;
}edge[maxn];
int fin[maxn],bian[maxn];
int C[maxn];
int Find(int a){
return fin[a]==a ? a : fin[a]=Find(fin[a]);
}
void B(int a,int b){
int A=Find(a),B=Find(b);
if(C[A]<=C[B]) fin[A]=B;
else fin[B]=A;
if(C[A]==C[B]) C[B]++;
}
int Kruskal(){
int ans=0,cnt=0;
for(int i=1;i<=m;i++){
int f=edge[bian[i]].f,t=edge[bian[i]].t;
if(Find(f)==Find(t)) continue;
cnt++;
ans+=edge[bian[i]].v;
// cout<<f<<" "<<t<<endl;
B(t,f);
}
// cout<<ans<<" "<<cnt<<endl;
if(cnt<n-1) ans=0;
return ans;
}
bool cmp(int a,int b){
return edge[a].v<edge[b].v;
}
void read(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++) fin[i]=i,C[i]=1;
for(int i=1;i<=m;i++) scanf("%d%d%d",&edge[i].f,&edge[i].t,&edge[i].v);
for(int i=1;i<=m;i++) bian[i]=i;
sort(bian+1,bian+1+m,cmp);
// for(int i=1;i<=m;i++) cout<<edge[bian[i]].v<<" ";
// cout<<endl;
int ans=Kruskal();
if(ans) cout<<ans<<endl;
else cout<<"orz"<<endl;
}
int main (){
freopen("P3366_1.in","r",stdin);
read();
}