Submission #30138

#TimeUsernameProblemLanguageResultExecution timeMemory
30138gs14004Untitled (POI11_smi)C++14
50 / 100
3000 ms162904 KiB
#include <bits/stdc++.h> using namespace std; typedef long long lint; typedef long double llf; typedef pair<int, int> pi; const int MAXN = 100005; int n, m; set<int> gph[MAXN]; vector<vector<int>> pth; vector<pi> lis; void dfs(int x){ while(!gph[x].empty()){ int nxt = *gph[x].begin(); gph[x].erase(nxt); gph[nxt].erase(x); dfs(nxt); lis.push_back(pi(x, nxt)); } } bool instk[MAXN]; int main(){ scanf("%d %d",&n,&m); for(int i=0; i<m; i++){ int s, e, x, y; scanf("%d %d %d %d",&s,&e,&x,&y); if(x == y) continue; gph[s].insert(e); gph[e].insert(s); } for(int i=1; i<=n; i++){ if(gph[i].size() & 1){ puts("NIE"); return 0; } if(gph[i].empty()) continue; lis.clear(); dfs(i); reverse(lis.begin(), lis.end()); stack<int> stk; stk.push(lis[0].first); instk[lis[0].first] = 1; for(auto &i : lis){ if(instk[i.second]){ vector<int> v = {i.second}; while(!stk.empty() && stk.top() != i.second){ v.push_back(stk.top()); instk[stk.top()] = 0; stk.pop(); } v.push_back(i.second); pth.push_back(v); } else{ stk.push(i.second); instk[i.second] = 1; } } assert(stk.size() == 1); } printf("%d\n", pth.size()); for(auto &i : pth){ printf("%d ", i.size() - 1); for(auto &j : i) printf("%d ", j); puts(""); } }

Compilation message (stderr)

smi.cpp: In function 'int main()':
smi.cpp:64:27: warning: format '%d' expects argument of type 'int', but argument 2 has type 'std::vector<std::vector<int> >::size_type {aka long unsigned int}' [-Wformat=]
  printf("%d\n", pth.size());
                           ^
smi.cpp:66:29: warning: format '%d' expects argument of type 'int', but argument 2 has type 'std::vector<int>::size_type {aka long unsigned int}' [-Wformat=]
   printf("%d ", i.size() - 1);
                             ^
smi.cpp:26:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&n,&m);
                      ^
smi.cpp:29:35: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d %d %d",&s,&e,&x,&y);
                                   ^
#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...