rt。比如我的最小生成树板子代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct line {
int u,v,w;
} e[200001];
int fa[5001],n,p,cnt,m,xx,yy;
long long sum=0,tot;
int findd(int t) {
if(fa[t]==t)return t;
else return fa[t]=findd(fa[t]);
}
int vnion(int x,int y) {
xx=findd(x);
yy=findd(y);
fa[xx]=yy;
}
int cmp(line a,line b) {
if (a.w<b.w) return 1;
else return 0;
}
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++)fa[i]=i;
for(int j=1; j<=m; j++) {
cin>>e[j].u>>e[j].v>>e[j].w;
}
sort(e+1,e+m+1,cmp);
for(int i=1; i<=m; i++) {
if(findd(e[i].u)!=findd(e[i].v)) {
vnion(e[i].u,e[i].v);
sum+=e[i].w;
tot++;
//cout<<e[i].u<<' '<<e[i].v<<endl;
}
if(tot==n-1)break;
}
for(int i=2;i<=n;i++){
if(findd(i)!=findd(i-1)){
cout<<"orz";
return 0;
}
}
cout<<sum;
return 0;
}
(kruskal)
这份代码就是厌氧的,它开 O2 全 RE,但是不开就过了。