結果

問題 No.1153 ねこちゃんゲーム
ユーザー tailstails
提出日時 2020-11-04 09:20:40
言語 C
(gcc 12.3.0)
結果
AC  
実行時間 56 ms / 2,500 ms
コード長 1,586 bytes
コンパイル時間 1,003 ms
コンパイル使用メモリ 34,324 KB
実行使用メモリ 20,980 KB
最終ジャッジ日時 2023-09-29 15:40:05
合計ジャッジ時間 13,274 ms
ジャッジサーバーID
(参考情報)
judge15 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
5,924 KB
testcase_01 AC 2 ms
5,764 KB
testcase_02 AC 2 ms
5,872 KB
testcase_03 AC 2 ms
5,924 KB
testcase_04 AC 2 ms
5,784 KB
testcase_05 AC 2 ms
5,908 KB
testcase_06 AC 2 ms
5,868 KB
testcase_07 AC 39 ms
12,596 KB
testcase_08 AC 40 ms
12,540 KB
testcase_09 AC 39 ms
12,540 KB
testcase_10 AC 40 ms
12,588 KB
testcase_11 AC 39 ms
12,608 KB
testcase_12 AC 39 ms
12,536 KB
testcase_13 AC 40 ms
12,544 KB
testcase_14 AC 40 ms
12,528 KB
testcase_15 AC 39 ms
12,616 KB
testcase_16 AC 41 ms
12,544 KB
testcase_17 AC 39 ms
12,548 KB
testcase_18 AC 38 ms
12,612 KB
testcase_19 AC 38 ms
12,472 KB
testcase_20 AC 36 ms
12,536 KB
testcase_21 AC 36 ms
12,580 KB
testcase_22 AC 38 ms
12,608 KB
testcase_23 AC 38 ms
12,532 KB
testcase_24 AC 37 ms
12,604 KB
testcase_25 AC 37 ms
12,528 KB
testcase_26 AC 37 ms
12,528 KB
testcase_27 AC 52 ms
20,836 KB
testcase_28 AC 56 ms
20,980 KB
testcase_29 AC 55 ms
20,184 KB
testcase_30 AC 52 ms
20,100 KB
testcase_31 AC 49 ms
17,132 KB
testcase_32 AC 22 ms
12,560 KB
testcase_33 AC 22 ms
12,672 KB
testcase_34 AC 22 ms
12,688 KB
testcase_35 AC 21 ms
12,644 KB
testcase_36 AC 22 ms
12,428 KB
testcase_37 AC 11 ms
12,024 KB
testcase_38 AC 9 ms
10,128 KB
testcase_39 AC 10 ms
11,676 KB
testcase_40 AC 11 ms
11,896 KB
testcase_41 AC 10 ms
10,040 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c:73:1: 警告: 戻り値の型をデフォルトの ‘int’ にします [-Wimplicit-int]
   73 | main(){
      | ^~~~
main.c: 関数 ‘main’ 内:
main.c:116:9: 警告: 関数 ‘printf’ の暗黙的な宣言です [-Wimplicit-function-declaration]
  116 |         printf("%d %d\n",zi[g],zv[g]);
      |         ^~~~~~
main.c:1:1: 備考: include ‘<stdio.h>’ or provide a declaration of ‘printf’
  +++ |+#include <stdio.h>
    1 | #pragma GCC optimize("Ofast")
main.c:116:9: 警告: 組み込み関数 ‘printf’ の互換性がない暗黙的な宣言です [-Wbuiltin-declaration-mismatch]
  116 |         printf("%d %d\n",zi[g],zv[g]);
      |         ^~~~~~
main.c:116:9: 備考: include ‘<stdio.h>’ or provide a declaration of ‘printf’

ソースコード

diff #

#pragma GCC optimize("Ofast")
#pragma GCC target("avx2")

char*mmap();
#define RD(v) int v=0;{int c;while(c=*rp++-48,c>=0)v=v*10+c;}

int a[200001];
int ar[200001];

int en[200001];
int ei[200001];
int eb[400000];

union{
	int uv[400000];
	struct{
		int gn[200001];
		int gb1[200001];
		int gb2[200001];
		int zi[32],zv[32];
	}s;
}u;
#define uv  u.uv
#define gn  u.s.gn
#define gb1 u.s.gb1
#define gb2 u.s.gb2
#define zi  u.s.zi
#define zv  u.s.zv

void f1(int i,int p){
	int b1=0;
	int b2=0;
	for(int k=0;k<en[i];++k){
		int j=eb[ei[i]+k];
		if(j!=p){
			f1(j,i);
			int g=1<<gn[j];
			b2|=b1&g;
			b1|=g;
		}
	}
	gb1[i]=b1;
	gb2[i]=b2;
	gn[i]=__builtin_ctz(~b1);
}

void f2(int i,int p){
	int gi=gn[i];
	int gp=gn[p];
	gp=gb2[p]&1<<gi||gp<gi?gp:gi;
	int bp=1<<gp;
	gb2[i]|=gb1[i]&bp;
	//gb1[i]|=bp;
	gn[i]=gi=__builtin_ctz(~(gb1[i]|bp));
	int g=gi^gp;
	if(ar[i]){
		zi[g]=ar[i];
		zv[g]=p;
	}
	for(int k=0;k<en[i];++k){
		int j=eb[ei[i]+k];
		if(j!=p){
			g=gi^gn[j];
			if(ar[i]){
				zi[g]=ar[i];
				zv[g]=j;
			}
			f2(j,i);
		}
	}
}

main(){
	char*rp=mmap(0l,7*600002,1,2,0,0ll);
	RD(n);
	RD(m);
	for(int l=0;++l<=m;){
		RD(t);
		a[l]=t;
		ar[t]=l;
	}
	{
		int ne=n-1<<1;
		for(int j=0;j<ne;++j){
			RD(t);
			uv[j]=t;
			++en[uv[j]];
		}
	}
	{
		int s=0;
		for(int i=0;++i<=n;){
			ei[i]=s;
			s+=en[i];
			en[i]=0;
		}
	}
	{
		int ne=n-1<<1;
		for(int j=0;j<ne;++j){
			int i=uv[j];
			eb[ei[i]+en[i]++]=uv[j^1];
		}
	}

	gn[0]=31;
	gb2[0]=-1;
	zi[0]=zv[0]=-1;
	f1(1,0);
	f2(1,0);
	int g=0;
	for(int l=0;++l<=m;){
		int i=a[l];
		g^=gn[i];
	}
	printf("%d %d\n",zi[g],zv[g]);
}
0