Submission #334532

#TimeUsernameProblemLanguageResultExecution timeMemory
334532VodkaInTheJarUntitled (POI11_smi)C++14
50 / 100
3095 ms112748 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3") #define endl '\n' using namespace std; const int maxn = 1e5 + 3; int n, m; multiset <int> adj[maxn]; void read() { cin >> n >> m; for (int i = 1; i <= m; i++) { int a, b, s, t; cin >> a >> b >> s >> t; if (s == t) continue; adj[a].insert(b); adj[b].insert(a); } } int depth[maxn]; int par[maxn]; vector <int> cycle; void dfs(int ver) { for (auto i: adj[ver]) { if (depth[i] == -1) { par[i] = ver; depth[i] = depth[ver] + 1; dfs(i); } else { if (depth[i] < depth[ver] - 1) { cycle.clear(); int curr = ver; while (curr != i) { cycle.push_back(curr); curr = par[curr]; } cycle.push_back(curr); } } } } void solve() { for (int i = 1; i <= n; i++) if ((int)adj[i].size() % 2 == 1) { cout << "NIE" << endl; return; } vector <vector <int> > ans; for (;;) { int ver = -1; for (int i = 1; i <= n; i++) if (!adj[i].empty()) { ver = i; break; } if (ver == -1) break; memset(depth, -1, sizeof(depth)); dfs(ver); cycle.push_back(cycle[0]); for (int i = 0; i < (int)cycle.size()-1; i++) { adj[cycle[i]].erase(adj[cycle[i]].find(cycle[i+1])); adj[cycle[i+1]].erase(adj[cycle[i+1]].find(cycle[i])); } ans.push_back(cycle); } cout << (int)ans.size() << endl; for (auto i: ans) { cout << (int)i.size()-1 << " "; for (auto j: i) cout << j << " "; cout << endl; } } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); read(); solve(); }
#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...