|
沙发
楼主 |
发表于 2018-10-4 16:54:33
|
只看该作者
本帖最后由 倚窗倾听风吹雨 于 2018-10-4 16:58 编辑
并查集裸题- #include<iostream>
- #include<algorithm>
- #define FOR(i,a,b) for(register int i=a;i<=b;i++)
- using namespace std;
- const int N=1005,M=100005;
- int n,m,a[N];
- struct node
- {
- int b,e,t;
- bool operator < (node x){return t<x.t;}
- }ch[M];
- int getf(int q)
- {
- if(a[q]==q)return q;
- a[q]=getf(a[q]);
- return a[q];
- }
- int main()
- {
- cin>>n>>m;
- FOR(i,1,m)
- cin>>ch[i].b>>ch[i].e>>ch[i].t;
- sort(ch+1,ch+m+1);///FOR(i,1,m)cout<<ch[i].b<<" "<<ch[i].e<<" "<<ch[i].t<<endl;
- FOR(i,1,n)a[i]=i;
- FOR(i,1,m)
- {
- int t1=getf(ch[i].b),t2=getf(ch[i].e);
- if(t1!=t2){a[t2]=t1;n--;}
- if(n==1){cout<<ch[i].t<<endl;return 0;}
- }
- cout<<-1<<endl;
- return 0;
- }
- /*
- 4 4
- 1 2 6
- 1 3 4
- 1 4 5
- 4 2 3
- */
复制代码
|
|