Submission #40977534
Source Code Expand
#include <bits/stdc++.h>
namespace // to fold that junk code
{
#define filein(x) freopen(x".in", "r", stdin);
#define file(x) freopen(x".in", "r", stdin), freopen(x".out", "w", stdout);
#define files(x) freopen(x".in", "r", stdin), freopen(x".ans", "w", stdout);
using namespace std;
#define cT const T&
template<typename T>
inline T chkmin(T& x, cT y){if (x > y) x = y; return x;}
template<typename T>
inline T chkmax(T& x, cT y){if (x < y) x = y; return x;}
template <typename T>
inline bool inrange(cT x, cT l, cT r){return (l <= x) && (x <= r);}
template <typename T>
inline bool inrange(cT l, cT r, cT L, cT R){return (L <= l) && (r <= R);}
#undef cT
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
typedef unsigned u32;
template <typename T>
using pr = pair<T, T>;
typedef pr<int> pii;
typedef pr<ll> pll;
typedef pr<db> pdd;
typedef complex<double> cp;
typedef vector<int> vi;
inline void YN(bool x){puts(x ? "Yes" : "No");}
}
const int N = 222222, INF = 0x3f3f3f3f;
int n, dp[N][3];
vector<int> g[N];
inline void addedge(int u, int v){g[u].emplace_back(v);}
inline void ade(int u, int v){addedge(u, v); addedge(v, u);}
void dfs(int u, int fa, int lim)
{
dp[u][0] = dp[u][1] = dp[u][2] = 0;
for (int v : g[u])
{
if (v == fa) continue;
dfs(v, u, lim);
int a = INF, b = INF, c = INF;
if (dp[u][0] + dp[v][1] <= lim) chkmin(b, max(dp[u][0], dp[v][1]));
if (dp[u][0] + dp[v][2] + 1 <= lim) chkmin(a, max(dp[u][0], dp[v][2] + 1));
if (dp[u][1] + dp[v][1] <= lim) chkmin(c, max(dp[u][1], dp[v][1]));
if (dp[u][1] + dp[v][2] + 1 <= lim) chkmin(b, max(dp[u][1], dp[v][2] + 1));
if (dp[u][2] + dp[v][2] + 1 <= lim) chkmin(c, max(dp[u][2], dp[v][2] + 1));
dp[u][0] = a; dp[u][1] = min(b, dp[u][0]); dp[u][2] = min(c, dp[u][1]);
}
}
int main()
{
#ifndef ONLINE_JUDGE
filein("i");
#endif
scanf("%d", &n);
for (int i=1, u, v; i<n; i++){scanf("%d%d", &u, &v); ade(u, v);}
int l = 0, r = __lg(n) + 10;
while (l <= r)
{
int mid = (l + r) >> 1; dfs(1, 0, mid);
if (dp[1][2] < INF) r = mid - 1;
else l = mid + 1;
}
printf("%d\n", l + 1);
return 0;
}
Submission Info
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:58:7: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
58 | scanf("%d", &n);
| ~~~~~^~~~~~~~~~
./Main.cpp:59:37: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
59 | for (int i=1, u, v; i<n; i++){scanf("%d%d", &u, &v); ade(u, v);}
| ~~~~~^~~~~~~~~~~~~~~~
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
600 / 600 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample00.txt, sample01.txt, sample02.txt |
| All |
sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt, testcase37.txt, testcase38.txt, testcase39.txt, testcase40.txt, testcase41.txt, testcase42.txt, testcase43.txt |
| Case Name |
Status |
Exec Time |
Memory |
| sample00.txt |
AC |
8 ms |
8824 KiB |
| sample01.txt |
AC |
10 ms |
8752 KiB |
| sample02.txt |
AC |
8 ms |
8764 KiB |
| testcase00.txt |
AC |
7 ms |
8916 KiB |
| testcase01.txt |
AC |
8 ms |
8752 KiB |
| testcase02.txt |
AC |
184 ms |
30092 KiB |
| testcase03.txt |
AC |
188 ms |
32296 KiB |
| testcase04.txt |
AC |
198 ms |
28456 KiB |
| testcase05.txt |
AC |
205 ms |
29584 KiB |
| testcase06.txt |
AC |
222 ms |
29796 KiB |
| testcase07.txt |
AC |
166 ms |
29492 KiB |
| testcase08.txt |
AC |
83 ms |
16684 KiB |
| testcase09.txt |
AC |
89 ms |
17060 KiB |
| testcase10.txt |
AC |
154 ms |
17132 KiB |
| testcase11.txt |
AC |
116 ms |
16600 KiB |
| testcase12.txt |
AC |
153 ms |
17352 KiB |
| testcase13.txt |
AC |
167 ms |
17084 KiB |
| testcase14.txt |
AC |
153 ms |
16796 KiB |
| testcase15.txt |
AC |
131 ms |
17440 KiB |
| testcase16.txt |
AC |
125 ms |
16772 KiB |
| testcase17.txt |
AC |
132 ms |
17312 KiB |
| testcase18.txt |
AC |
132 ms |
17292 KiB |
| testcase19.txt |
AC |
125 ms |
16992 KiB |
| testcase20.txt |
AC |
99 ms |
17664 KiB |
| testcase21.txt |
AC |
96 ms |
17496 KiB |
| testcase22.txt |
AC |
110 ms |
17940 KiB |
| testcase23.txt |
AC |
106 ms |
17600 KiB |
| testcase24.txt |
AC |
123 ms |
16936 KiB |
| testcase25.txt |
AC |
126 ms |
17416 KiB |
| testcase26.txt |
AC |
130 ms |
17544 KiB |
| testcase27.txt |
AC |
129 ms |
16728 KiB |
| testcase28.txt |
AC |
127 ms |
17280 KiB |
| testcase29.txt |
AC |
139 ms |
17224 KiB |
| testcase30.txt |
AC |
132 ms |
17384 KiB |
| testcase31.txt |
AC |
153 ms |
17300 KiB |
| testcase32.txt |
AC |
155 ms |
17220 KiB |
| testcase33.txt |
AC |
151 ms |
17360 KiB |
| testcase34.txt |
AC |
151 ms |
17532 KiB |
| testcase35.txt |
AC |
133 ms |
16872 KiB |
| testcase36.txt |
AC |
134 ms |
17284 KiB |
| testcase37.txt |
AC |
141 ms |
17384 KiB |
| testcase38.txt |
AC |
139 ms |
16764 KiB |
| testcase39.txt |
AC |
138 ms |
16840 KiB |
| testcase40.txt |
AC |
124 ms |
17096 KiB |
| testcase41.txt |
AC |
118 ms |
16952 KiB |
| testcase42.txt |
AC |
131 ms |
17436 KiB |
| testcase43.txt |
AC |
126 ms |
16920 KiB |