# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
135032 | Lawliet | 철인 이종 경기 (APIO18_duathlon) | C++14 | 1105 ms | 1048580 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define MAX 100010
using namespace std;
typedef long long int lli;
int n, m;
int n1, n2;
int sub[MAX];
int prof[MAX];
lli ans;
lli sumProf[MAX];
lli ansRoot[MAX];
bool marc[MAX];
vector<int> grafo[MAX];
void DFSCalculate(int i, int p, int depth)
{
sub[i] = 1;
marc[i] = true;
sumProf[i] = depth;
for(int g = 0 ; g < grafo[i].size() ; g++)
{
int prox = grafo[i][g];
if(prox == p) continue;
DFSCalculate(prox , i , depth + 1);
sub[i] += sub[prox];//SOMA ATÉ RAIZ
sumProf[i] += sumProf[prox];
}
}
void DFSRotate(int i, int p)
{
ansRoot[i] = sumProf[i];
for(int g = 0 ; g < grafo[i].size() ; g++)
{
int prox = grafo[i][g];
if(prox == p) continue;
int lastSubI = sub[i];
int lastSubProx = sub[prox];
lli lastSumI = sumProf[i];
lli lastSumProx = sumProf[prox];
sub[i] -= sub[prox];
sumProf[i] -= sumProf[prox];
sumProf[prox] += sumProf[i] + sub[i] - sub[prox];
sub[prox] += sub[i];
DFSRotate(prox , i);
sub[i] = lastSubI;
sub[prox] = lastSubProx;
sumProf[i] = lastSumI;
sumProf[prox] = lastSumProx;
}
}
int main()
{
scanf("%d %d",&n,&m);
for(int g = 0 ; g < m ; g++)
{
scanf("%d %d",&n1,&n2);
grafo[n1].push_back(n2);
grafo[n2].push_back(n1);
}
for(int g = 1 ; g <= n ; g++)
{
if(marc[g]) continue;
DFSCalculate(g , g , 0);
DFSRotate(g , g);
lli p = sub[g];
p *= sub[g] - 1;
ans -= p;
}
for(int g = 1 ; g <= n ; g++)
ans += ansRoot[g];
printf("%lld\n",ans);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |