update
This commit is contained in:
parent
221fadf2ce
commit
6731e1f80c
68
src/P2330/P2330.cpp
Normal file
68
src/P2330/P2330.cpp
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
using ll = long long;
|
||||||
|
|
||||||
|
auto &is = std::cin;
|
||||||
|
auto &os = std::cout;
|
||||||
|
|
||||||
|
const ll max_n{300+5},max_m{8000+5};
|
||||||
|
struct Edge{
|
||||||
|
ll u,v,c;
|
||||||
|
}edges[max_m];
|
||||||
|
ll n, m, u, v, c, edges_size;
|
||||||
|
|
||||||
|
template<ll size>
|
||||||
|
struct UnionSet{
|
||||||
|
ll father[size];
|
||||||
|
constexpr UnionSet()noexcept{
|
||||||
|
for(ll i{0};i<size;i++){
|
||||||
|
father[i]=i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
constexpr ll find(const ll n)noexcept{
|
||||||
|
if(father[n]==n)return n;
|
||||||
|
return father[n]=find(father[n]);
|
||||||
|
}
|
||||||
|
constexpr void merge(const ll a,const ll b)noexcept{
|
||||||
|
father[find(a)]=father[find(b)];
|
||||||
|
}
|
||||||
|
constexpr bool is_same(const ll a,const ll b)noexcept{
|
||||||
|
return find(a)==find(b);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
UnionSet<max_n> u_set;
|
||||||
|
ll ans_num, ans_max;
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
is>>n>>m;
|
||||||
|
|
||||||
|
for(ll i{0};i<m;i++){ // 注意题目条件
|
||||||
|
is>>u>>v>>c;
|
||||||
|
edges[edges_size++] = {u,v,c};
|
||||||
|
}
|
||||||
|
|
||||||
|
std::sort(edges,edges+edges_size,[](Edge &a,Edge &b)constexpr noexcept ->bool{
|
||||||
|
return a.c<b.c;
|
||||||
|
});
|
||||||
|
|
||||||
|
for(ll i{0};i<edges_size;i++){
|
||||||
|
if(!u_set.is_same(edges[i].u, edges[i].v)){
|
||||||
|
u_set.merge(edges[i].u, edges[i].v);
|
||||||
|
ans_num++;
|
||||||
|
ans_max=edges[i].c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os<<ans_num<<' '<<ans_max<<'\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
4 5
|
||||||
|
1 2 3
|
||||||
|
1 4 5
|
||||||
|
2 4 7
|
||||||
|
2 3 6
|
||||||
|
3 4 8
|
||||||
|
*/
|
Loading…
Reference in New Issue
Block a user