前两个点过不了,怎么回事撒
  • 板块P1396 营救
  • 楼主Eroi
  • 当前回复10
  • 已保存回复10
  • 发布时间2021/11/13 11:24
  • 上次更新2023/11/4 00:44:26
查看原帖
前两个点过不了,怎么回事撒
131890
Eroi楼主2021/11/13 11:24

#include #include #include #include #include

using namespace std;

int n; int m; int s; int t; int f[20000]; struct Edge{ int u; int v; int w; bool operator < (const Edge &x)const{ return w<x.w ; } }edge[20000];

int find(int x){ if(f[x]==x) return x; else return f[x]=find(f[x]); }

int main() { cin>>n; cin>>m; cin>>s; cin>>t; for(register int i;i<=m;i++){ cin>>edge[i].u; cin>>edge[i].v; cin>>edge[i].w; } for(int i=1;i<=n;i++){ f[i]=i; } sort(edge+1,edge+1+m); for(int i=1;i<=m;i++){ int ui=edge[i].u ; int vi=edge[i].v ; int wi=edge[i].w ; if(find(ui)!=find(vi)){ f[find(vi)]=find(ui); if(find(s)==find(t)){ cout<<wi; return 0; } } } return 0; }

2021/11/13 11:24
加载中...