90分 TLE 求助!!
查看原帖
90分 TLE 求助!!
637788
kimi0705楼主2022/12/2 17:48
#include<bits/stdc++.h>
using namespace std;
struct _{
	int x;
	int y;
	int t;
}lu[100005];
bool cmp(_ a, _ b) {
	return a.t < b.t;
}
int n, m;
int father[1005];
int Rank[1005];
void init() {
	for(int i = 1; i <= n; i ++) {
		father[i] = i;
		Rank[i] = 1;
	}
	return;
}
int find(int x) {
	if(father[x] == x) return x;
	else return find(father[x]); 
}
void merge(int i,int j) {
	int find_i = find(i);
	int find_j = find(j);
	if(Rank[find_i] >= Rank[find_j]) {
		father[find_j] = find_i;
	}else{
		father[find_i] = find_j;
	}
	if(Rank[find_i] == Rank[find_j] && find_i != find_j) {
		Rank[find_j] ++; 
	}
	return;
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m;
	init();
	for(int i = 1; i <= m; i++) cin >> lu[i].x >> lu[i].y >> lu[i].t;
	sort(lu + 1,lu + m + 1, cmp);
	for (int i = 1; i <= m; i++) {
		merge(lu[i].x,lu[i].y);
		bool flag= true;
		for(int j = 1; j < n; j ++) {
			if(find(j) != find(j + 1)) {
				flag = false;
				break;
			}
		}
		if(flag) {
			cout << lu[i].t;
			return 0;
		}
	}
	cout << -1;
}
2022/12/2 17:48
加载中...