제출 #293061

#제출 시각아이디문제언어결과실행 시간메모리
293061SaboonSimurgh (IOI17_simurgh)C++17
13 / 100
156 ms4984 KiB
#include "simurgh.h" #include <bits/stdc++.h> using namespace std; const int maxn = 500 + 10; vector<pair<int,int>> g[maxn]; int par[maxn], parindex[maxn], h[maxn]; bool visited[maxn]; int Cost, c[maxn*maxn]; void dfs(int v){ visited[v] = 1; for (auto [u,idx] : g[v]){ if (!visited[u]){ h[u] = h[v]+1; par[u] = v; parindex[u] = idx; dfs(u); } } } bool eq[maxn]; vector<int> find_roads(int n, vector<int> u, vector<int> v){ int m = v.size(); for (int i = 0; i < v.size(); i++){ g[v[i]].push_back({u[i],i}); g[u[i]].push_back({v[i],i}); } dfs(0); vector<int> Q(n-1); for (int i = 1; i < n; i++) Q[i-1] = parindex[i]; Cost = count_common_roads(Q); memset(c, -1, sizeof c); for (int i = 0; i < m; i++){ if (h[v[i]] > h[u[i]]) swap(v[i],u[i]); if (par[u[i]] == v[i]) continue; int x = u[i], me = -1; while (x != v[i]){ if (c[parindex[x]] != -1 and me != -1){ x = par[x]; continue; } Q[x-1] = i; int Tmp = count_common_roads(Q); if (c[parindex[x]] != -1){ if (Tmp == Cost) me = c[parindex[x]]; else me = 1-c[parindex[x]]; } else{ if (Tmp == Cost) eq[x] = 1; else if (Tmp > Cost) eq[x] = 0, me = 1; else eq[x] = 0, me = 0; } Q[x-1] = parindex[x]; x = par[x]; } if (me == -1) me = 0; x = u[i]; while (x != v[i]){ if (c[parindex[x]] == -1){ if (eq[x]) c[parindex[x]] = me; else c[parindex[x]] = 1-me; } x = par[x]; } c[i] = me; } int now = 0; for (int i = 0; i < m; i++) if (c[i] == 1) Q[now++] = i; return Q; }

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

simurgh.cpp: In function 'std::vector<int> find_roads(int, std::vector<int>, std::vector<int>)':
simurgh.cpp:28:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     for (int i = 0; i < v.size(); i++){
      |                     ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...