社区讨论
非递归求法不行吗?
P1111修复公路参与者 5已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @lo7zlsf0
- 此快照首次捕获于
- 2023/10/27 10:21 2 年前
- 此快照最后确认于
- 2023/10/27 10:21 2 年前
RT,下是10分代码
CPP#include <bits/stdc++.h>
using namespace std;
const int N=200000;
int n,m,f[N];
struct road {
int from,to;
int time;
bool operator<(const road r)const {
return time<r.time;
}
} r[N];
int find(int x) {
int r=x;
if(r!=f[r]) {
r=f[r];
}
while(x!=f[x]) {
int z=x;
x=f[x];
f[z]=r;
}
return r;
}
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++)
f[i]=i;
for(int i=1; i<=m; i++)
cin>>r[i].from>>r[i].to>>r[i].time;
sort(r+1,r+m+1);
for(int i=1; i<=m; i++) {
int x=find(r[i].from),y=find(r[i].to);
if(x!=y) f[x]=y,n--;
if(n==1){
cout<<r[i].time;
return 0;
}
}
cout<<-1;
return 0;
}
改成这个就AC了
CPPint find(int x){return f[x]==x?x:(f[x]=find(f[x]));}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...