# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
127016 | Lawliet | Mousetrap (CEOI17_mousetrap) | C++14 | 1047 ms | 77432 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 1000010
using namespace std;
typedef long long int lli;
int n;
int mouse, trap;
int n1, n2;
lli dp[MAX];
vector<int> grafo[MAX];
void DFS(int i, int p)
{
if(grafo[i].size() == 1 && i != trap)
{
dp[i] = 0;
return;
}
vector<int> aux;
aux.push_back( 0 );
for(int g = 0 ; g < grafo[i].size() ; g++)
{
int prox = grafo[i][g];
if(prox == p) continue;
//printf("i = %d prox = %d\n",i,prox);
DFS(prox , i);
aux.push_back( dp[prox] );
}
sort(aux.begin() , aux.end());
dp[i] = grafo[i].size() - 2 + aux[aux.size() - 2] + 1;
//printf("dp(%d) = %lld\n",i,dp[i]);
}
int main()
{
scanf("%d %d %d",&n,&trap,&mouse);
for(int g = 0 ; g < n - 1 ; g++)
{
scanf("%d %d",&n1,&n2);
grafo[n1].push_back(n2);
grafo[n2].push_back(n1);
}
DFS(trap , trap);
printf("%lld\n",dp[mouse]);
}
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... |