제출 #844190

#제출 시각아이디문제언어결과실행 시간메모리
844190MrBrionixBeech Tree (IOI23_beechtree)C++17
9 / 100
1918 ms2097152 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN = 200'000; vector<pair<int, int>> grafo[MAXN], opz[MAXN]; int m, col[MAXN], p[MAXN]; bool ok[MAXN]; vector<map<int,int>> freq[MAXN]; int num[MAXN]; bool comp(map<int,int> x,map<int,int> y){ return x.size()>y.size(); } void dfs(int nodo){ vector<int> tmp; ok[nodo]=true; freq[nodo].push_back(map<int,int>()); for(auto [to,c] : grafo[nodo]){ dfs(to); ok[nodo]&=ok[to]; for(auto x : freq[to]) freq[nodo].push_back(x); freq[nodo][0][c]++; tmp.push_back(c); } if(!ok[nodo])return; sort(freq[nodo].begin()+1,freq[nodo].end(),comp); sort(tmp.begin(),tmp.end()); for(int i=1;i<tmp.size();i++){ if(tmp[i]==tmp[i-1])ok[nodo]=false; } for(int i=1;i<freq[nodo].size();i++){ for(auto [x,y] : freq[nodo][i]){ if(y>freq[nodo][i-1][x])ok[nodo]=false; } } } vector<int> beechtree(int N, int M, vector<int> P, vector<int> C) { m = M; for (int i = 1; i <= N - 1; i++) { grafo[P[i]].emplace_back(i, C[i]); p[i] = P[i]; } dfs(0); vector<int> ans; for (int i = 0; i < N; i++) { ans.push_back(ok[i]); } return ans; } /* int main() { int N, M; assert(2 == scanf("%d %d", &N, &M)); std::vector<int> P(N); for (int i = 0; i < N; ++i) assert(1 == scanf("%d", &P[i])); std::vector<int> C(N); for (int i = 0; i < N; ++i) assert(1 == scanf("%d", &C[i])); fclose(stdin); std::vector<int> res = beechtree(N, M, P, C); int n = res.size(); for (int i = 0; i < n; ++i) { if (i > 0) printf(" "); printf("%d", res[i]); } printf("\n"); fclose(stdout); return 0; } */

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

beechtree.cpp: In function 'void dfs(int)':
beechtree.cpp:40:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |     for(int i=1;i<tmp.size();i++){
      |                 ~^~~~~~~~~~~
beechtree.cpp:44:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::map<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |     for(int i=1;i<freq[nodo].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...