제출 #1067129

#제출 시각아이디문제언어결과실행 시간메모리
1067129ZanP참나무 (IOI23_beechtree)C++17
0 / 100
2067 ms29380 KiB
#include "beechtree.h" #include <iostream> #include <vector> #include <algorithm> #include <unordered_map> using namespace std; #define ll long long int n, m; vector<int> parents, colors; vector<vector<int>> children; void dfs_subtree(int u, vector<int> & subtree) { subtree.push_back(u); for(int v : children[u]){ dfs_subtree(v, subtree); } } vector<int> get_subtree(int u) { vector<int> subtree; subtree.reserve(n); dfs_subtree(u, subtree); return subtree; } bool check_permutation(int u, vector<int> & v){ if(v[0] != u) return false; unordered_map<int, int> f; for (int i = 1; i < v.size(); i++) { if(!f.count(colors[i])) f[colors[i]] = 0; if(parents[v[i]] != v[f[colors[i]]]) return false; f[colors[i]]++; } return true; } vector<int> beechtree(int N, int M, vector<int> P, vector<int> C){ n = N; m = M; parents = P; colors = C; children.resize(N); vector<int> ans; ans.resize(N,0); for(int child = 1; child < N; child++) { children[P[child]].push_back(child); } // brute force vector<int> subtree; for(int u = 0; u<n; u++) { subtree = get_subtree(u); sort(subtree.begin(), subtree.end()); if(check_permutation(u, subtree)){ ans[u] = 1; continue; } while(next_permutation(subtree.begin(), subtree.end())){ if(check_permutation(u, subtree)){ ans[u] = 1; break; } } } return ans; } // int main() // { // vector<int> ans = beechtree(4, 2, {-1, 0, 0, 0}, {0, 1, 1, 2}); // for (int i = 0; i<ans.size(); i++) // { // cout << ans[i] << " "; // } // cout << "\n"; // return 0; // }

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

beechtree.cpp: In function 'bool check_permutation(int, std::vector<int>&)':
beechtree.cpp:32:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |     for (int i = 1; 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...
#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...