제출 #1313801

#제출 시각아이디문제언어결과실행 시간메모리
1313801algoproclubType Printer (IOI08_printer)C++20
100 / 100
81 ms30608 KiB
// UUID: 9e0595c2-6fca-494a-b863-dd7a3486f7d0 #include <bits/stdc++.h> using namespace std; vector<char> nodes(1, 0); vector<vector<array<int, 2>>> nbrs(1, vector<array<int, 2>>(0)); vector<bool> vis; string strans; int depthGen(int Index){ if(vis[Index]) return 0; vis[Index]=true; int ans=0; for(auto& x : nbrs[Index]){ if(x[1]==-1){ continue; } if(!vis[x[1]]){ ans=max(ans, (x[0]=1+depthGen(x[1]))); } } sort(nbrs[Index].begin(), nbrs[Index].end()); return ans; } void dfs(int Index){ if(vis[Index]) return; vis[Index]=true; //printf("[%d: %d]", Index, nbrs[Index].size()); for(auto [_, x] : nbrs[Index]){ if(x==-1){ strans.push_back('P'); continue; } if(!vis[x]){ strans.push_back(nodes[x]); dfs(x); //printf("%c\n", nodes[x]); strans.push_back('-'); //printf("-\n"); } } } int main() { int n; cin >> n; int maxLen=0; vector<pair<int, string>> input(n); for(auto& x : input){ cin >> x.second; x.first=x.second.size(); } sort(input.begin(), input.end()); for(int i=0;i<n;i++){ const string& s=input[i].second; maxLen=max(maxLen, (int)s.size()); int curr=0; for(char x : s){ bool found=false; for(auto [_, y] : nbrs[curr]){ if(-1==y) continue; if(x==nodes[y]){ found=true; curr=y; break; } } if(!found){ nbrs[curr].push_back({0, nbrs.size()}); curr=nbrs.size(); nbrs.push_back(vector<array<int, 2>>(0)); nodes.push_back(x); } } nbrs[curr].push_back({0, -1}); } vis.resize(nodes.size(), false); depthGen(0); vis.assign(nodes.size(), false); dfs(0); while(strans.back()=='-') strans.pop_back(); cout << strans.size(); for(char x : strans) cout << '\n' << x; }

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

printer.cpp: In function 'int main()':
printer.cpp:68:67: warning: narrowing conversion of 'nbrs.std::vector<std::vector<std::array<int, 2> > >::size()' from 'std::vector<std::vector<std::array<int, 2> > >::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
   68 |                                 nbrs[curr].push_back({0, nbrs.size()});
      |                                                          ~~~~~~~~~^~
#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...