Submission #1045968


Source Code Expand

#include <set>
#include <map>
#include <cmath>
#include <ctime>
#include <bitset>
#include <string>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cassert>
#include <iomanip>
#include <iostream>
#include <algorithm>
#define PR pair
#define fi first
#define se second
#define mk make_pair
#define pb push_back
#define REP(i, x, y)   for(int i = (int)(x); i <= (int)(y); i++)
#define FOR(i, x, y)   for(int i = (int)(x); i <  (int)(y); i++)
#define PER(i ,x, y)  for(int i = (int)(x); i >= (int)(y); i--)
#define CH	         ch = getchar()
#define Exit(...)    printf(__VA_ARGS__), exit(0)
#define dln()        fprintf(stderr,"\n")
#define dprintf(...) fprintf(stderr,__VA_ARGS__)
using namespace std;
typedef double	  db;
typedef long long LL;
typedef vector<int> VI;
typedef vector<VI > VII;
typedef PR<int,int> PII;
typedef vector<PII> VPI;
const	int inf=2e9;
const	LL Inf=1e10;
const	int P=1e9+7;
const	int N=200005;

inline LL IN(){
	LL x = 0;
	int ch = 0, f = 0;
	for (CH; ch != -1 && (ch < 48 || ch > 57); CH) f = (ch == '-');
	for (; ch >= 48 && ch <= 57; CH) x = (x << 1) + (x << 3) + ch - '0';
	return f ? (-x) : x;
}
template<typename T> inline int chkmin(T &a, const T &b){if(b < a) return a = b, 1; return 0;}
template<typename T> inline int chkmax(T &a, const T &b){if(b > a) return a = b, 1; return 0;}

void renew(int &x, const int &y){
	x += y;
	if(x >= P) x -= P;
	if(x <  0) x += P;
}

int Pow(int x, int y, int p){
	int a = 1;
	for (; y; y >>= 1, x = (LL)x * x %p) if(y & 1) a=(LL)a * x%p;
	return a;
}

int n;
int mxd[N], sed[N], mad[N], gg[N], hev[N];
struct edge{
	int v, pre;
}e[N << 1]; int dex, adj[N];
int fa[N];

void dfs(int x){
	for(int i = adj[x]; i; i = e[i].pre){
		int v = e[i].v;
		if(v == fa[x]) continue;
		fa[v] = x;
		dfs(v);
		if(mxd[v] + 1 > mxd[x]){
			sed[x] = mxd[x];
			hev[x] = v;
			mxd[x] = mxd[v] + 1;
		}else
		if(mxd[v] + 1 > sed[x]){
			sed[x] = mxd[v] + 1;
		}
	}
}

void dp(int x){
	for(int i = adj[x]; i; i = e[i].pre){
		int v = e[i].v;
		if(v == fa[x]) continue;
		if(v == hev[x]){
			gg[v] = max(gg[x], sed[x]) + 1;
		}else{
			gg[v] = max(gg[x], mxd[x]) + 1;
		}
		dp(v);
	}
}

int hg[N], lo[N];
LL ans = 1;
char s[N];

void work(int x, int par){
	mad[x] = 0;
	if(s[x] == '1') lo[x] = 0; else lo[x] = 1 << 30;
	for(int i = adj[x]; i; i = e[i].pre){
		int v = e[i].v;
		if(v == par) continue;
		work(v, x);
		mad[x] = max(mad[x], mad[v] + 1);
		lo[x] = min(lo[x], lo[v] - 1);
	}
	hg[x] = min(mad[x] + 1, mxd[x] - 1);
	ans += max(0, hg[x] - lo[x] + 1);
	lo[x] = max(lo[x], hg[x] + 1);
	if(lo[x] == mxd[x]) lo[x] = 1 << 30;
}

int main(){
	scanf("%d", &n);
	REP(i, 1, n - 1){
		int x, y;
		scanf("%d%d", &x, &y);
		e[++dex] = (edge){y, adj[x]}; adj[x] = dex;
		e[++dex] = (edge){x, adj[y]}; adj[y] = dex;
	}
	dfs(1);
	dp(1);
	REP(i, 1, n) mxd[i] = max(mxd[i], gg[i]);
	int rt = min_element(mxd + 1, mxd + n + 1) - mxd;
	scanf("%s", s + 1);
	work(rt, 0);
	cout << ans << endl;
	return 0;
}

Submission Info

Submission Time
Task F - Black Radius
User syc19999
Language C++14 (GCC 5.4.1)
Score 1900
Code Size 3112 Byte
Status AC
Exec Time 119 ms
Memory 17792 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:119:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
                 ^
./Main.cpp:122:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &x, &y);
                        ^
./Main.cpp:130:20: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s", s + 1);
                    ^

Judge Result

Set Name Sample Subtask All
Score / Max Score 0 / 0 1300 / 1300 600 / 600
Status
AC × 3
AC × 31
AC × 81
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt
Subtask 0_01.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 2_00.txt, 2_01.txt, 2_02.txt, 2_03.txt, 2_04.txt, 2_05.txt, 2_06.txt, 2_07.txt, 2_08.txt, 2_09.txt, 2_10.txt, 2_11.txt, 2_12.txt, 2_13.txt, 2_14.txt, 2_15.txt, 2_16.txt, 2_17.txt, 2_18.txt, 2_19.txt, 2_20.txt, 2_21.txt, 2_22.txt, 2_23.txt, 2_24.txt, 2_25.txt, 2_26.txt, 2_27.txt, 2_28.txt, 2_29.txt, 2_30.txt, 2_31.txt, 2_32.txt, 2_33.txt, 2_34.txt, 2_35.txt, 2_36.txt, 2_37.txt, 2_38.txt, 2_39.txt, 2_40.txt, 2_41.txt, 2_42.txt, 2_43.txt, 2_44.txt, 2_45.txt, 2_46.txt, 2_47.txt
Case Name Status Exec Time Memory
0_00.txt AC 3 ms 256 KB
0_01.txt AC 3 ms 256 KB
0_02.txt AC 3 ms 256 KB
1_00.txt AC 3 ms 256 KB
1_01.txt AC 119 ms 17792 KB
1_02.txt AC 109 ms 15232 KB
1_03.txt AC 94 ms 10624 KB
1_04.txt AC 77 ms 10624 KB
1_05.txt AC 59 ms 9088 KB
1_06.txt AC 84 ms 10624 KB
1_07.txt AC 84 ms 10624 KB
1_08.txt AC 86 ms 11136 KB
1_09.txt AC 100 ms 14208 KB
1_10.txt AC 92 ms 13568 KB
1_11.txt AC 102 ms 17536 KB
1_12.txt AC 87 ms 11904 KB
1_13.txt AC 97 ms 13824 KB
1_14.txt AC 87 ms 11904 KB
1_15.txt AC 88 ms 11392 KB
1_16.txt AC 92 ms 12544 KB
1_17.txt AC 99 ms 13440 KB
1_18.txt AC 91 ms 10496 KB
1_19.txt AC 86 ms 10496 KB
1_20.txt AC 94 ms 10496 KB
1_21.txt AC 96 ms 11136 KB
1_22.txt AC 82 ms 10624 KB
1_23.txt AC 81 ms 10624 KB
1_24.txt AC 85 ms 11008 KB
1_25.txt AC 86 ms 11648 KB
1_26.txt AC 78 ms 10368 KB
1_27.txt AC 77 ms 10496 KB
1_28.txt AC 71 ms 10752 KB
1_29.txt AC 88 ms 12160 KB
2_00.txt AC 3 ms 256 KB
2_01.txt AC 108 ms 17408 KB
2_02.txt AC 104 ms 16384 KB
2_03.txt AC 110 ms 16000 KB
2_04.txt AC 100 ms 14080 KB
2_05.txt AC 100 ms 14208 KB
2_06.txt AC 100 ms 14720 KB
2_07.txt AC 95 ms 10624 KB
2_08.txt AC 96 ms 10624 KB
2_09.txt AC 94 ms 10624 KB
2_10.txt AC 79 ms 10624 KB
2_11.txt AC 77 ms 10624 KB
2_12.txt AC 82 ms 10624 KB
2_13.txt AC 62 ms 9088 KB
2_14.txt AC 58 ms 9088 KB
2_15.txt AC 58 ms 9088 KB
2_16.txt AC 84 ms 10624 KB
2_17.txt AC 85 ms 10624 KB
2_18.txt AC 85 ms 10624 KB
2_19.txt AC 85 ms 10624 KB
2_20.txt AC 84 ms 10624 KB
2_21.txt AC 84 ms 10624 KB
2_22.txt AC 86 ms 11136 KB
2_23.txt AC 92 ms 11520 KB
2_24.txt AC 86 ms 11392 KB
2_25.txt AC 96 ms 14464 KB
2_26.txt AC 95 ms 13696 KB
2_27.txt AC 96 ms 14336 KB
2_28.txt AC 98 ms 13312 KB
2_29.txt AC 102 ms 16640 KB
2_30.txt AC 99 ms 15488 KB
2_31.txt AC 96 ms 13440 KB
2_32.txt AC 85 ms 10752 KB
2_33.txt AC 88 ms 12032 KB
2_34.txt AC 92 ms 13056 KB
2_35.txt AC 98 ms 14720 KB
2_36.txt AC 95 ms 10496 KB
2_37.txt AC 89 ms 10624 KB
2_38.txt AC 87 ms 11136 KB
2_39.txt AC 94 ms 10752 KB
2_40.txt AC 81 ms 10624 KB
2_41.txt AC 86 ms 10496 KB
2_42.txt AC 76 ms 10496 KB
2_43.txt AC 93 ms 13952 KB
2_44.txt AC 71 ms 10496 KB
2_45.txt AC 65 ms 10624 KB
2_46.txt AC 65 ms 10752 KB
2_47.txt AC 82 ms 12544 KB