結果
| 問題 |
No.1153 ねこちゃんゲーム
|
| コンテスト | |
| ユーザー |
tails
|
| 提出日時 | 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]);
}
tails