結果
問題 | No.1153 ねこちゃんゲーム |
ユーザー |
![]() |
提出日時 | 2020-11-04 00:27:58 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 94 ms / 2,500 ms |
コード長 | 1,387 bytes |
コンパイル時間 | 519 ms |
コンパイル使用メモリ | 35,796 KB |
実行使用メモリ | 28,288 KB |
最終ジャッジ日時 | 2024-07-22 09:25:44 |
合計ジャッジ時間 | 15,610 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 40 |
コンパイルメッセージ
main.c:62:1: warning: return type defaults to 'int' [-Wimplicit-int] 62 | main(){ | ^~~~ main.c: In function 'main': main.c:99:9: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration] 99 | printf("%d %d\n",zi[g],zv[g]); | ^~~~~~ main.c:1:1: note: include '<stdio.h>' or provide a declaration of 'printf' +++ |+#include <stdio.h> 1 | #pragma GCC optimize("Ofast") main.c:99:9: warning: incompatible implicit declaration of built-in function 'printf' [-Wbuiltin-declaration-mismatch] 99 | printf("%d %d\n",zi[g],zv[g]); | ^~~~~~ main.c:99:9: note: include '<stdio.h>' or provide a declaration of 'printf'
ソースコード
#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];int uv[400000];int gn[200001];int gb1[200001];int gb2[200001];int zi[32],zv[32];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]);if(ar[i]){zi[gp^gi]=ar[i];zv[gp^gi]=p;}for(int k=0;k<en[i];++k){int j=eb[ei[i]+k];int gj=gn[j];if(j!=p){if(ar[i]){zi[gj^gi]=ar[i];zv[gj^gi]=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;}for(int j=0;j<n-1<<1;++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;}}for(int j=0;j<n-1<<1;++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]);}