# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
66394 | 2018-08-10T11:22:52 Z | ansol4328 | 문명 (KOI17_civilization) | C++ | 1000 ms | 38144 KB |
#include<stdio.h> #include<memory.h> #include<queue> using namespace std; int n, k; int visit[2002][2002]; int p[4000002]; int cnt; bool st[4000002]; void setup(int a) { cnt=a; memset(p,-1,sizeof(p)); memset(st,false,sizeof(st)); } int f(int v) { if(p[v]==-1) return v; p[v]=f(p[v]); return p[v]; } void u(int v1, int v2) // v2 subtree -> v1 subtree { v1=f(v1); v2=f(v2); if(v1==v2) return; if(st[v2]) cnt--; p[v2]=v1; } queue<int> Q; int main() { scanf("%d %d",&n,&k); setup(k); for(int i=0 ; i<k ; i++) { int x, y; scanf("%d %d",&y,&x); st[(y-1)*n+x-1]=true; Q.push((y-1)*n+x-1); visit[y][x]=1; } int res=1; int dy[4]={-1,0,1,0}; int dx[4]={0,1,0,-1}; while(cnt!=1) { int y=Q.front()/n+1; int x=Q.front()%n+1; Q.pop(); res=max(res,visit[y][x]); for(int i=0 ; i<4 ; i++) { if(!(y+dy[i]>=1 && y+dy[i]<=n && x+dx[i]>=1 && x+dx[i]<=n)) continue; if(visit[y+dy[i]][x+dx[i]]==0) { visit[y+dy[i]][x+dx[i]]=visit[y][x]+1; u((y-1)*n+x-1,(y+dy[i]-1)*n+x+dx[i]-1); Q.push((y+dy[i]-1)*n+x+dx[i]-1); } else if(visit[y+dy[i]][x+dx[i]]<visit[y][x]+1) { u((y-1)*n+x-1,(y+dy[i]-1)*n+x+dx[i]-1); res=max(res,visit[y][x]); } if(cnt==1) break; } } printf("%d",res-1); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 17 ms | 20472 KB | Output is correct |
2 | Correct | 17 ms | 20472 KB | Output is correct |
3 | Correct | 16 ms | 20472 KB | Output is correct |
4 | Correct | 17 ms | 20472 KB | Output is correct |
5 | Correct | 17 ms | 20472 KB | Output is correct |
6 | Correct | 18 ms | 20552 KB | Output is correct |
7 | Correct | 17 ms | 20552 KB | Output is correct |
8 | Correct | 18 ms | 20552 KB | Output is correct |
9 | Correct | 19 ms | 20552 KB | Output is correct |
10 | Correct | 16 ms | 20552 KB | Output is correct |
11 | Correct | 21 ms | 20552 KB | Output is correct |
12 | Correct | 21 ms | 20552 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 17 ms | 20472 KB | Output is correct |
2 | Correct | 17 ms | 20472 KB | Output is correct |
3 | Correct | 16 ms | 20472 KB | Output is correct |
4 | Correct | 17 ms | 20472 KB | Output is correct |
5 | Correct | 17 ms | 20472 KB | Output is correct |
6 | Correct | 18 ms | 20552 KB | Output is correct |
7 | Correct | 17 ms | 20552 KB | Output is correct |
8 | Correct | 18 ms | 20552 KB | Output is correct |
9 | Correct | 19 ms | 20552 KB | Output is correct |
10 | Correct | 16 ms | 20552 KB | Output is correct |
11 | Correct | 21 ms | 20552 KB | Output is correct |
12 | Correct | 90 ms | 27840 KB | Output is correct |
13 | Correct | 77 ms | 27840 KB | Output is correct |
14 | Correct | 98 ms | 27840 KB | Output is correct |
15 | Correct | 64 ms | 27840 KB | Output is correct |
16 | Correct | 22 ms | 27840 KB | Output is correct |
17 | Correct | 279 ms | 29548 KB | Output is correct |
18 | Correct | 367 ms | 29548 KB | Output is correct |
19 | Correct | 307 ms | 29548 KB | Output is correct |
20 | Correct | 304 ms | 29548 KB | Output is correct |
21 | Correct | 342 ms | 29548 KB | Output is correct |
22 | Correct | 16 ms | 29548 KB | Output is correct |
23 | Correct | 75 ms | 29548 KB | Output is correct |
24 | Correct | 21 ms | 20552 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 17 ms | 20472 KB | Output is correct |
2 | Correct | 17 ms | 20472 KB | Output is correct |
3 | Correct | 16 ms | 20472 KB | Output is correct |
4 | Correct | 17 ms | 20472 KB | Output is correct |
5 | Correct | 17 ms | 20472 KB | Output is correct |
6 | Correct | 18 ms | 20552 KB | Output is correct |
7 | Correct | 17 ms | 20552 KB | Output is correct |
8 | Correct | 18 ms | 20552 KB | Output is correct |
9 | Correct | 19 ms | 20552 KB | Output is correct |
10 | Correct | 16 ms | 20552 KB | Output is correct |
11 | Correct | 21 ms | 20552 KB | Output is correct |
12 | Correct | 90 ms | 27840 KB | Output is correct |
13 | Correct | 77 ms | 27840 KB | Output is correct |
14 | Correct | 98 ms | 27840 KB | Output is correct |
15 | Correct | 64 ms | 27840 KB | Output is correct |
16 | Correct | 22 ms | 27840 KB | Output is correct |
17 | Correct | 279 ms | 29548 KB | Output is correct |
18 | Correct | 367 ms | 29548 KB | Output is correct |
19 | Correct | 307 ms | 29548 KB | Output is correct |
20 | Correct | 304 ms | 29548 KB | Output is correct |
21 | Correct | 342 ms | 29548 KB | Output is correct |
22 | Correct | 16 ms | 29548 KB | Output is correct |
23 | Correct | 75 ms | 29548 KB | Output is correct |
24 | Correct | 220 ms | 35340 KB | Output is correct |
25 | Correct | 317 ms | 35984 KB | Output is correct |
26 | Correct | 234 ms | 35984 KB | Output is correct |
27 | Correct | 247 ms | 35984 KB | Output is correct |
28 | Correct | 164 ms | 35984 KB | Output is correct |
29 | Execution timed out | 1056 ms | 38144 KB | Time limit exceeded |
30 | Halted | 0 ms | 0 KB | - |