結果
問題 | No.1473 おでぶなおばけさん |
ユーザー | tails |
提出日時 | 2021-04-13 22:29:05 |
言語 | C (gcc 12.3.0) |
結果 |
AC
|
実行時間 | 15 ms / 2,000 ms |
コード長 | 2,499 bytes |
コンパイル時間 | 1,102 ms |
コンパイル使用メモリ | 34,176 KB |
実行使用メモリ | 8,320 KB |
最終ジャッジ日時 | 2024-06-30 01:37:50 |
合計ジャッジ時間 | 4,252 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
5,248 KB |
testcase_01 | AC | 1 ms
5,248 KB |
testcase_02 | AC | 13 ms
8,064 KB |
testcase_03 | AC | 9 ms
6,912 KB |
testcase_04 | AC | 7 ms
5,376 KB |
testcase_05 | AC | 3 ms
5,376 KB |
testcase_06 | AC | 10 ms
7,296 KB |
testcase_07 | AC | 12 ms
8,064 KB |
testcase_08 | AC | 12 ms
8,320 KB |
testcase_09 | AC | 12 ms
8,192 KB |
testcase_10 | AC | 6 ms
5,888 KB |
testcase_11 | AC | 6 ms
5,888 KB |
testcase_12 | AC | 5 ms
5,888 KB |
testcase_13 | AC | 4 ms
5,376 KB |
testcase_14 | AC | 3 ms
5,376 KB |
testcase_15 | AC | 6 ms
5,376 KB |
testcase_16 | AC | 6 ms
5,632 KB |
testcase_17 | AC | 1 ms
5,376 KB |
testcase_18 | AC | 2 ms
5,376 KB |
testcase_19 | AC | 6 ms
5,376 KB |
testcase_20 | AC | 7 ms
5,888 KB |
testcase_21 | AC | 8 ms
6,272 KB |
testcase_22 | AC | 12 ms
7,040 KB |
testcase_23 | AC | 10 ms
6,400 KB |
testcase_24 | AC | 9 ms
6,144 KB |
testcase_25 | AC | 11 ms
7,552 KB |
testcase_26 | AC | 10 ms
7,680 KB |
testcase_27 | AC | 4 ms
5,376 KB |
testcase_28 | AC | 11 ms
8,064 KB |
testcase_29 | AC | 7 ms
6,144 KB |
testcase_30 | AC | 8 ms
6,912 KB |
testcase_31 | AC | 15 ms
8,064 KB |
testcase_32 | AC | 10 ms
7,040 KB |
testcase_33 | AC | 9 ms
6,272 KB |
testcase_34 | AC | 6 ms
5,376 KB |
testcase_35 | AC | 5 ms
5,376 KB |
testcase_36 | AC | 9 ms
6,272 KB |
testcase_37 | AC | 9 ms
6,272 KB |
testcase_38 | AC | 2 ms
5,376 KB |
testcase_39 | AC | 5 ms
5,888 KB |
testcase_40 | AC | 5 ms
5,760 KB |
testcase_41 | AC | 5 ms
5,504 KB |
testcase_42 | AC | 5 ms
5,504 KB |
testcase_43 | AC | 7 ms
7,040 KB |
testcase_44 | AC | 7 ms
7,040 KB |
testcase_45 | AC | 7 ms
7,040 KB |
testcase_46 | AC | 9 ms
6,784 KB |
testcase_47 | AC | 11 ms
7,808 KB |
testcase_48 | AC | 9 ms
7,168 KB |
コンパイルメッセージ
main.c:95:1: warning: return type defaults to 'int' [-Wimplicit-int] 95 | main(){ | ^~~~ main.c: In function 'main': main.c:150:25: warning: implicit declaration of function 'write' [-Wimplicit-function-declaration] 150 | write(1,wbuf,wp-wbuf); | ^~~~~ main.c:151:25: warning: implicit declaration of function '_exit'; did you mean '_Exit'? [-Wimplicit-function-declaration] 151 | _exit(0); | ^~~~~ | _Exit
ソースコード
#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;} #define WTHI(v) {long _z=v,_n=0,_d=0;while(++_n,_d=_d<<8|0x30|_z%10,_z/=10);*(long*)wp=_d;wp+=_n;} #define WTLO(v) {long _z=v,_n=8,_d=0;while(_d=_d<<8|0x30|_z%10,_z/=10,--_n);*(long*)wp=_d;wp+=8;} #define wt(v) if(v>=100000000){WTHI(v/100000000);WTLO(v);}else{WTHI(v);} #define rep(v,e) for(int v=0;v<e;++v) typedef struct { int s,t,d; } Edge; Edge es[200000]; // sort void radix_sort_aux(Edge*a,Edge*b,int n){ int c[256]; for(int i=0;i<256;++i){ c[i]=0; } for(int i=0;i<n;++i){ ++c[a[i].d&255]; } int t=0; for(int i=256;i--;){ int u=c[i]; c[i]=t; t+=u; } for(int i=0;i<n;++i){ int j=c[a[i].d&255]++; b[j].s=a[i].s; b[j].t=a[i].t; b[j].d=(unsigned)a[i].d>>8|(unsigned)a[i].d<<24; } } void radix_sort(Edge*a,int n){ radix_sort_aux(a,a+n,n); radix_sort_aux(a+n,a,n); radix_sort_aux(a,a+n,n); radix_sort_aux(a+n,a,n); } // uf #define UFSIZE 100000 int ufbuf[UFSIZE]; void uf_init(){ for(int i=0;i<UFSIZE;++i){ ufbuf[i]=-1; } } int uf_root(int a){ int b; int t=a; while(b=ufbuf[t],b>=0) t=b; while(b=ufbuf[a],b>=0) ufbuf[a]=t,a=b; return t; } void uf_unite(int a,int b){ a=uf_root(a); b=uf_root(b); if(a!=b){ if(ufbuf[a]<ufbuf[b]){ ufbuf[a]+=ufbuf[b]; ufbuf[b]=a; }else{ ufbuf[b]+=ufbuf[a]; ufbuf[a]=b; } } } // graph #define MAXN 100000 #define MAXM 200000 int en[MAXN]; int ei[MAXN]; int eb[MAXM]; // typedef struct { int i,l; } Q; Q q[100000]; char vis[100000]; main(){ char*rp=mmap(0l,1l<<28,1,2,0,0ll); char wbuf[64],*wp=wbuf; rd(n); rd(m); rep(i,m){ rd(si); es[i].s=si-1; rd(ti); es[i].t=ti-1; rd(di); es[i].d=di; } radix_sort(es,m); int k=0; uf_init(); while(uf_root(0)!=uf_root(n-1)){ uf_unite(es[k].s,es[k].t); ++k; } int limd=es[k-1].d; wt(limd); *wp++=32; while(k<m&&es[k].d==limd){ ++k; } for(int j=0;j<k;++j){ ++en[es[j].s]; ++en[es[j].t]; } { int s=0; for(int i=0;i<n;++i){ ei[i]=s; s+=en[i]; en[i]=0; } } for(int j=0;j<k;++j){ int s=es[j].s; int t=es[j].t; eb[ei[s]+en[s]++]=t; eb[ei[t]+en[t]++]=s; } int qw=0,qr=0; vis[n-1]=1; q[qw].i=n-1; q[qw].l=0; ++qw; while(1){ int i=q[qr].i; int l=q[qr].l; ++qr; if(i==0){ wt(l); write(1,wbuf,wp-wbuf); _exit(0); } rep(j,en[i]){ int ii=eb[ei[i]+j]; if(!vis[ii]){ vis[ii]=1; q[qw].i=ii; q[qw].l=l+1; ++qw; } } } }