이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <stdio.h>
#include <algorithm>
struct edge{int x,y; long long c;} E[100010];
bool cmp(const edge& a, const edge& b){return a.c > b.c;}
const long long mod = 1000000009;
int N,M,P[100010]; long long C[100010],CON,ANS;
int find(int x){return P[x] = (x == P[x]) ? x : find(P[x]);}
int main()
{
int i,x,y;
scanf ("%d %d",&N,&M);
for (i=0;i<M;i++) scanf ("%d %d %lld",&E[i].x,&E[i].y,&E[i].c);
std::sort(E,E+M,cmp);
for (i=1;i<=N;i++){
P[i] = i;
C[i] = 1;
}
for (i=0;i<M;i++){
x = find(E[i].x);
y = find(E[i].y);
if (x != y){
P[y] = x;
CON = (CON + C[x] * C[y]) % mod;
C[x] += C[y];
}
ANS = (ANS + CON * E[i].c) % mod;
}
printf ("%lld",ANS);
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |