Codeforces Round \ # 480 (Div. 2) E. The Number Games (욕심)

1121 단어 codeforces
제목 링크:http://codeforces.com/contest/980/problem/E
큰 것 부터 작은 것 까지 노드 를 추가 할 수 있 는 지 없 는 지 를 직접 배가 시 켜 판단 하면 됩 니 다. 재 미 없 습 니 다.
코드:
#include
#define pb push_back
using namespace std;
const int MAXN=1e6+5;
int dp[MAXN][21];
bool book[MAXN];
int n,k;
vector E[MAXN];
void dfs(int now,int fa)
{
	dp[now][0]=fa;
	for(auto v:E[now])
	{
		if(v==fa) continue;
		dfs(v,now);
	}
}
void init()
{
	for(int k=1;k<=20;k++)
	{
		for(int i=1;i<=n;i++)
		{
			dp[i][k]=dp[dp[i][k-1]][k-1];
		}
	}
}
int main()
{
	//freopen("in.txt","r",stdin);
	//freopen("out.txt","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i=1;i--)
	{
		if(book[i]) continue;
		int now=i,cnt=0;
		for(int k=20;k>=0;k--)
		{
			if(book[dp[now][k]]) continue;
			now=dp[now][k];
			cnt+=(1<k) continue;
		k-=(cnt+1);
		for(int j=i;;j=dp[j][0])
		{
			if(book[j]) break;
			book[j]=true;
		}
	}
	for(int i=1;i

좋은 웹페이지 즐겨찾기