제출 #155438

#제출 시각아이디문제언어결과실행 시간메모리
155438oolimry경찰관과 강도 (BOI14_coprobber)C++14
컴파일 에러
0 ms0 KiB
#include "coprobber.h" #include <bits/stdc++.h> using namespace std; static int states[500005]; //police * 1000 + robber * 2 + (IF POLICE TURN) static int degree[500005]; static int to[500005]; static vector<int> rev[500005]; queue<int> can; inline int g(int police, int robber, int turn){ return police * 1000 + robber * 2 + turn; } int pos; int start(int N, bool A[MAX_N][MAX_N]) { int n = N; for(int u = 0;u < n;u++){ for(int v = 0;v < n;v++){ int s = g(u,v,0); rev[s+1].push_back(s); //Wait degree[s]++; for(int i = 0;i < n;i++){ if(A[u][i] == 1){ rev[g(i,v,1)].push_back(s); degree[s]++; } if(A[v][i] == 1){ rev[g(u,i,0)].push_back(s+1); degree[s+1]++; } } if(u == v){ states[s] = 1; states[s+1] = 1; } } } for(int i = 0;i < 500005;i++){ if(states[i] == 1){ can.push(i); degree[i] = 0; } } int work[n]; fill(work,work+n,n); while(!can.empty()){ int t = can.front(); //cout << t << "\n"; if(!(t&1)){ work[t/1000]--; if(work[t/1000] == 0){ pos = t/1000; return t/1000; } } can.pop(); for(int i = 0;i < rev[t].size();i++){ int s = rev[t][i]; if(states[s] == 0){ degree[s]--; //cout << t << " " << s << " " << degree[s] << "\n"; if(!(s & 1)){ can.push(s); states[s] = 1; degree[s] = 0; to[s] = t; //cout << s << " " << t << "\n"; } else if(degree[s] == 0){ can.push(s); states[s] = 1; } } } } return -1; }

컴파일 시 표준 에러 (stderr) 메시지

coprobber.cpp: In function 'int start(int, bool (*)[500])':
coprobber.cpp:59:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 0;i < rev[t].size();i++){
                 ~~^~~~~~~~~~~~~~~
/tmp/ccX5dHV0.o: In function `main':
grader.cpp:(.text.startup+0x1f8): undefined reference to `nextMove(int)'
collect2: error: ld returned 1 exit status