Submission #1430555
Source Code Expand
#include <iostream>
#include <iomanip> // << fixed << setprecision(xxx)
#include <algorithm> // do { } while ( next_permutation(A, A+xxx) ) ;
#include <vector>
#include <string> // to_string(nnn) // substr(m, n) // stoi(nnn)
#include <complex>
#include <tuple> // get<n>(xxx)
#include <queue>
#include <stack>
#include <map> // if (M.find(key) != M.end()) { }
#include <set> // S.insert(M);
// if (S.find(key) != S.end()) { }
// for (auto it=S.begin(); it != S.end(); it++) { }
// auto it = S.lower_bound(M);
#include <random> // random_device rd; mt19937 mt(rd());
#include <cctype>
#include <cassert>
#include <cmath>
#include <cstdio>
#include <cstdlib> // atoi(xxx)
using namespace std;
#define DEBUG 0 // change 0 -> 1 if we need debug.
// insert #if<tab> by my emacs. #if DEBUG == 1 ... #end
typedef long long ll;
// const int dx[4] = {1, 0, -1, 0};
// const int dy[4] = {0, 1, 0, -1};
// const int C = 1e6+10;
// const ll M = 1000000007;
vector<int> V[100010];
bool visited[100010];
typedef tuple<int, int, int> state; // now, d, from
int main () {
int N;
cin >> N;
for (auto i = 0; i < N-1; ++i) {
int a, b;
cin >> a >> b;
a--;
b--;
V[a].push_back(b);
V[b].push_back(a);
}
stack<state> S;
S.push(state(0, 0, -1));
int parent;
int D;
fill(visited, visited+N, false);
while (!S.empty()) {
int now = get<0>(S.top());
int d = get<1>(S.top());
int from = get<2>(S.top());
S.pop();
if (!visited[now]) {
// cerr << "now = " << now << ", d = " << d << endl;
visited[now] = true;
if (now == N-1) {
D = d;
parent = from;
break;
}
for (auto x : V[now]) {
if (!visited[x]) {
S.push(state(x, d+1, now));
}
}
}
}
stack<state> SS;
SS.push(state(N-1, 0, parent));
int cnt = 0;
fill(visited, visited+N, false);
while (!SS.empty()) {
int now = get<0>(SS.top());
int d = get<1>(SS.top());
SS.pop();
if (!visited[now]) {
visited[now] = true;
cnt++;
for (auto x : V[now]) {
if (!visited[x] && x != parent) {
SS.push(state(x, d+1, now));
}
}
}
}
int su = (D-1)/2 + cnt - 1;
int fa = N - 2 - su;
// cerr << "D = " << D << endl;
// cerr << "cnt = " << cnt << endl;
// cerr << "su = " << su << ", fa = " << fa << endl;
if (fa > su) {
cout << "Fennec" << endl;
} else {
cout << "Snuke" << endl;
}
}
Submission Info
Submission Time |
|
Task |
D - Fennec VS. Snuke |
User |
kazunetakahashi |
Language |
C++14 (GCC 5.4.1) |
Score |
0 |
Code Size |
2557 Byte |
Status |
WA |
Exec Time |
75 ms |
Memory |
5888 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
0 / 400 |
Status |
|
|
Set Name |
Test Cases |
Sample |
00_example_01.txt, 00_example_02.txt |
All |
00_example_01.txt, 00_example_02.txt, 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt |
Case Name |
Status |
Exec Time |
Memory |
00_example_01.txt |
AC |
2 ms |
2560 KB |
00_example_02.txt |
AC |
3 ms |
2560 KB |
01.txt |
WA |
3 ms |
2560 KB |
02.txt |
WA |
3 ms |
2560 KB |
03.txt |
AC |
3 ms |
2560 KB |
04.txt |
AC |
3 ms |
2560 KB |
05.txt |
WA |
63 ms |
5248 KB |
06.txt |
WA |
68 ms |
5504 KB |
07.txt |
AC |
63 ms |
5248 KB |
08.txt |
AC |
68 ms |
5504 KB |
09.txt |
AC |
2 ms |
2560 KB |
10.txt |
WA |
62 ms |
5504 KB |
11.txt |
AC |
67 ms |
5504 KB |
12.txt |
WA |
67 ms |
5760 KB |
13.txt |
WA |
71 ms |
5888 KB |
14.txt |
AC |
69 ms |
5888 KB |
15.txt |
AC |
71 ms |
5888 KB |
16.txt |
AC |
74 ms |
5760 KB |
17.txt |
AC |
74 ms |
5760 KB |
18.txt |
AC |
75 ms |
5760 KB |
19.txt |
AC |
74 ms |
5760 KB |