이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "Alicelib.h"
#include <bits/stdc++.h>
using namespace std;
void Alice(int N, int M, int *A, int *B){
vector <bool> used(N, 0);
vector <pair <int, int>> edge;
edge.emplace_back(N - 1, N);
for (int i = 0; i < M; ++ i){
if (A[i] > B[i]) swap(A[i], B[i]);
edge.emplace_back(A[i], B[i]);
if (A[i] + 1 == B[i]) used[A[i]] = 1;
}
for (int i = 0; i < N - 1; ++ i) if (!used[i]) {
edge.emplace_back(i, i + 1);
edge.emplace_back(i, N);
}
InitG(N + 1, int(edge.size()));
for (int i = 0; i < edge.size(); ++ i)
MakeG(i, edge[i].first, edge[i].second);
}
#include "Boblib.h"
#include <bits/stdc++.h>
using namespace std;
void Bob(int N, int M, int *C, int *D){
vector <int> deg(N, 0);
vector <vector <int>> adj(N);
for (int i = 0; i < M; ++ i) {
deg[D[i]] ++;
adj[C[i]].push_back(D[i]);
}
queue <int> qu;
for (int i = 0; i < N; ++ i)
if (!deg[i]) qu.push(i);
vector <int> ord(N);
int tot = 0;
while (qu.size()){
int u = qu.front();
qu.pop();
ord[u] = tot ++;
for (int v : adj[u])
if (!--deg[v]) qu.push(v);
}
vector <pair <int, int>> edge;
vector <bool> used(N, 0);
for (int i = 0; i < M; ++ i){
if (ord[D[i]] == N - 1) used[ord[C[i]]] = 1;
else if (ord[C[i]] + 1 < ord[D[i]])
edge.emplace_back(ord[C[i]], ord[D[i]]);
}
for (int i = 0; i < N - 1; ++ i)
if (!used[i]) edge.emplace_back(i, i + 1);
InitMap(N - 1, int(edge.size()));
for (auto [A, B] : edge) MakeMap(A, B);
}
컴파일 시 표준 에러 (stderr) 메시지
Alice.cpp: In function 'void Alice(int, int, int*, int*)':
Alice.cpp:23:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
23 | for (int i = 0; i < edge.size(); ++ i)
| ~~^~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |