Submission #3607824


Source Code Expand

#include<map>
#include<bitset>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<string>
#include<chrono>
#include<stack>
#include<fstream>
#define REP(i,x,y) for(ll i=x;i<=y;i++)
#define SIZE(a) ll(a.size())
#define vll vector<ll> 
#define MEMSET(a, n, m) for(ll i=0;i<=n;i++) a[i] = m
#define BIT(n) (ll(1)<<n)
#define UNIQUE(v) v.erase(unique(v.begin(),v.end()),v.end()) 
#define UNIQUE_ARRAY(a,n) n = unique(a + 1, a + x + 1) - a - 1
#define SORT(a,n) sort(a+1,a+n+1)
#define SORT_O(a,n,order) sort(a+1,a+n+1,order)
#define PER(i,y,x) for(ll i=y;i>=x;i--)
typedef long long ll;
using namespace std;

/*
struct point
{
long long dist; long long name;
bool operator<(const point& rhs) const {
return dist > rhs.dist;
}
};
*/
ll const MAX = 300005;
vll edge[MAX];
ll parent[MAX];
ll n;
ll tour[MAX];
ll root;
ll color[MAX] = {};
ll rk[MAX];
ll tour_ord[MAX];

bool ord(ll x, ll y) {
	return tour_ord[x] < tour_ord[y];
}

void dfs() {
	stack<ll> st;
	st.push(1);
	rk[1] = 0;
	parent[1] = 1;
	ll cnt = 1;
	while (!st.empty()) {
		ll cur = st.top();
		if (color[cur] == 0) {
			color[cur] = 1;
			tour[cnt] = cur;
			cnt++;
			REP(i, 0, edge[cur].size()-1) {
				ll next = edge[cur][i];
				if (color[next] == 0) {
					st.push(next);
					rk[next] = rk[cur] + 1;
					parent[next] = cur;
				}
			}
		}
		else {
			st.pop();
			color[cur] = 2;
		}
	}
	REP(i, 1, n) {
		tour_ord[tour[i]] = i;
	}
}

ll parents[MAX][105];

void init() {
	REP(i, 1, n) {
		parents[i][0] = parent[i];
	}
	REP(i, 1, 50) {
		REP(j, 1, n) {
			parents[j][i] = parents[parents[j][i - 1]][i - 1];
		}
	}
}

ll getanc(ll x, ll t) {
	ll bit = 0;
	while (t > 0) {
		if (t&BIT(bit)) {
			t ^= BIT(bit);
			x = parents[x][bit];
		}	
		bit++;
	}
	return x;
}

ll lca(ll x, ll y) {
	if (x == y) return x;
	if (rk[x] < rk[y]) swap(x, y);
	ll t = rk[x] - rk[y];
	x = getanc(x, t);
	if (x == y) return x;
	ll bit = 0;
	while (BIT(bit) <= rk[x]) {
		bit++;
	}
	while (bit >= 0) {
		if (parents[x][bit] != parents[y][bit]) {
			x = parents[x][bit]; y = parents[y][bit];
		}
		bit--;
	}
	return parent[x];
}

int main(){
	cin >> n;
	REP(i, 1, n-1) {
		ll a, b;
		cin >> a >> b;
		edge[a].push_back(b);
		edge[b].push_back(a);
	}
	dfs();
	init();
	//REP(i, 1, n) cout << tour[i] << " ";
	//cout << endl;
	ll qqq; cin >> qqq;
	REP(iii, 1, qqq) {
		ll m, k;
		cin >> m >> k;
		ll ans = -1e9;
		vll v;
		REP(i, 1, m) {
			ll t; cin >> t;
			v.push_back(t);
		}
		sort(v.begin(), v.end(), ord);
		for (ll i = 0; i + k - 1 < v.size(); i++) {
			ll j = i + k - 1;
			ll u = lca(v[i], v[j]);
			//cout << "!" << u << endl;
			ans = max(ans, rk[u]);
			//cout << v[i] << " " << v[j] << " " << u << endl;
		}
		cout << ans << endl;
	}
}

Submission Info

Submission Time
Task F - 根付き木のみさわさん
User nejineji
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2905 Byte
Status RE
Exec Time 408 ms
Memory 108924 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 0 / 20 0 / 110
Status
AC × 3
AC × 28
RE × 1
AC × 54
RE × 1
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 sample_01.txt, sample_02.txt, sample_03.txt, subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_01_18.txt, subtask_01_19.txt, subtask_01_20.txt, subtask_01_21.txt, subtask_01_22.txt, subtask_01_23.txt, subtask_01_24.txt, subtask_01_25.txt, subtask_01_26.txt
Subtask2 sample_01.txt, sample_02.txt, sample_03.txt, subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_01_18.txt, subtask_01_19.txt, subtask_01_20.txt, subtask_01_21.txt, subtask_01_22.txt, subtask_01_23.txt, subtask_01_24.txt, subtask_01_25.txt, subtask_01_26.txt, subtask_02_01.txt, subtask_02_02.txt, subtask_02_03.txt, subtask_02_04.txt, subtask_02_05.txt, subtask_02_06.txt, subtask_02_07.txt, subtask_02_08.txt, subtask_02_09.txt, subtask_02_10.txt, subtask_02_11.txt, subtask_02_12.txt, subtask_02_13.txt, subtask_02_14.txt, subtask_02_15.txt, subtask_02_16.txt, subtask_02_17.txt, subtask_02_18.txt, subtask_02_19.txt, subtask_02_20.txt, subtask_02_21.txt, subtask_02_22.txt, subtask_02_23.txt, subtask_02_24.txt, subtask_02_25.txt, subtask_02_26.txt
Case Name Status Exec Time Memory
sample_01.txt AC 6 ms 19328 KB
sample_02.txt AC 6 ms 19328 KB
sample_03.txt AC 6 ms 19328 KB
subtask_01_01.txt RE 109 ms 17280 KB
subtask_01_02.txt AC 6 ms 19328 KB
subtask_01_03.txt AC 6 ms 19456 KB
subtask_01_04.txt AC 7 ms 19456 KB
subtask_01_05.txt AC 36 ms 19456 KB
subtask_01_06.txt AC 6 ms 19456 KB
subtask_01_07.txt AC 7 ms 19456 KB
subtask_01_08.txt AC 34 ms 19456 KB
subtask_01_09.txt AC 6 ms 19456 KB
subtask_01_10.txt AC 7 ms 19456 KB
subtask_01_11.txt AC 34 ms 19456 KB
subtask_01_12.txt AC 6 ms 19456 KB
subtask_01_13.txt AC 7 ms 19456 KB
subtask_01_14.txt AC 34 ms 19456 KB
subtask_01_15.txt AC 6 ms 19456 KB
subtask_01_16.txt AC 8 ms 19456 KB
subtask_01_17.txt AC 35 ms 19456 KB
subtask_01_18.txt AC 6 ms 19456 KB
subtask_01_19.txt AC 7 ms 19456 KB
subtask_01_20.txt AC 35 ms 19456 KB
subtask_01_21.txt AC 6 ms 19456 KB
subtask_01_22.txt AC 7 ms 19456 KB
subtask_01_23.txt AC 35 ms 19456 KB
subtask_01_24.txt AC 6 ms 19456 KB
subtask_01_25.txt AC 7 ms 19456 KB
subtask_01_26.txt AC 34 ms 19456 KB
subtask_02_01.txt AC 204 ms 108792 KB
subtask_02_02.txt AC 215 ms 108032 KB
subtask_02_03.txt AC 230 ms 107812 KB
subtask_02_04.txt AC 212 ms 108924 KB
subtask_02_05.txt AC 205 ms 107960 KB
subtask_02_06.txt AC 222 ms 107904 KB
subtask_02_07.txt AC 230 ms 107564 KB
subtask_02_08.txt AC 231 ms 107084 KB
subtask_02_09.txt AC 250 ms 106676 KB
subtask_02_10.txt AC 209 ms 107640 KB
subtask_02_11.txt AC 224 ms 106684 KB
subtask_02_12.txt AC 257 ms 106624 KB
subtask_02_13.txt AC 207 ms 108156 KB
subtask_02_14.txt AC 215 ms 107644 KB
subtask_02_15.txt AC 230 ms 107456 KB
subtask_02_16.txt AC 225 ms 107588 KB
subtask_02_17.txt AC 223 ms 106868 KB
subtask_02_18.txt AC 245 ms 106572 KB
subtask_02_19.txt AC 211 ms 108156 KB
subtask_02_20.txt AC 216 ms 107480 KB
subtask_02_21.txt AC 235 ms 107264 KB
subtask_02_22.txt AC 223 ms 107624 KB
subtask_02_23.txt AC 237 ms 107028 KB
subtask_02_24.txt AC 259 ms 106676 KB
subtask_02_25.txt AC 408 ms 107264 KB
subtask_02_26.txt AC 404 ms 107084 KB