#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
static bool cmp(vector<int>&m,vector<int>&n){
return m[2]>n[2];
}
class Protest {
vector<int> pre;
public:
int days() {
int n, m;
cin >> n >> m;
vector<vector<int>> cur(m, vector<int>(3,0));
for (int i = 0; i < m; i++) {
cin >> cur[i][0] >> cur[i][1] >> cur[i][2];
}
sort(cur.begin(),cur.end(),cmp);
int antiDays = 0;
init(n);
int lastday = 0;
for(int i=0;i<m;i++){
if(lastday!=cur[i][2] && find(cur[i][0])!=find(cur[i][1])){
antiDays++;
lastday = cur[i][2];
}
join(cur[i][0],cur[i][1]);
}
return antiDays;
}
void init(int &n) {
pre.resize(n + 1);
for (int i = 1; i <= n; i++) {
pre[i] = i;
}
}
int find(int i) {
if (i == pre[i]) return i;
return pre[i] = find(pre[i]);
}
void join(int i, int j) {
int a = find(i), b = find(j);
if (a == b) return;
pre[a] = b;
}
};
int main() {
Protest solve;
int ans = solve.days();
cout << ans << endl;
return 0;
}
【蓝桥杯】历届试题——国王的烦恼
最新推荐文章于 2024-08-04 22:43:03 发布