Submission #84170

#TimeUsernameProblemLanguageResultExecution timeMemory
84170nikolapesic2802Untitled (POI11_smi)C++14
60 / 100
3051 ms141100 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back const int N=1e5+5; vector<int> degree(N); vector<vector<int> > graf(N); unordered_map<int,int> visited[N]; vector<vector<int> > sol; stack<int> stk; vector<int> vis(N); void solve(int tr) { //printf("Usao za %i\n",tr); vis[tr]++; stk.push(tr); if(vis[tr]==2) { vector<int> t; t.pb(tr); vis[tr]--; stk.pop(); while(stk.top()!=tr) { t.pb(stk.top()); vis[stk.top()]--; stk.pop(); } t.pb(stk.top()); sol.pb(t); } for(auto p:graf[tr]) { if(!visited[min(tr,p)][max(tr,p)]) { visited[min(tr,p)][max(tr,p)]=1; degree[tr]--; degree[p]--; solve(p); return; } } } void fastscan(int &number) { register int c; number = 0; c = getchar(); for (; (c>47 && c<58); c=getchar()) number = number *10 + c - 48; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); /*int n=1e5,m=1e6; //scanf("%i %i",&n,&m); for(int i=0;i<n;i++) { for(int j=0;j<10;j++){ int a=i,b=(i+j)%n+1,s=1,t=0; //scanf("%i %i %i %i",&a,&b,&s,&t); if(s!=t) { graf[a].pb(b); graf[b].pb(a); degree[a]++; degree[b]++; } } }*/ int n,m; //scanf("%i %i",&n,&m); fastscan(n); fastscan(m); for(int i=0;i<m;i++) { int a,b,s,t; fastscan(a); fastscan(b); fastscan(s); fastscan(t); //scanf("%i %i %i %i",&a,&b,&s,&t); if(s!=t) { graf[a].pb(b); graf[b].pb(a); degree[a]++; degree[b]++; //printf("Dodajem iz %i u %i\n",a,b); } } for(int i=1;i<=n;i++) { if(degree[i]%2==1) { cout<< "NIE\n"; //printf("NIE\n"); return 0; } } for(int i=1;i<=n;i++) { while(degree[i]!=0) { while(stk.size()) stk.pop(); solve(i); vis[i]--; } } cout << sol.size() << "\n"; for(auto p:sol) { cout << p.size()-1<<" "; // printf("%i ",p.size()-1); for(auto d:p) { cout << d << " "; //printf("%i ",d); } cout << "\n"; // printf("\n"); } /*printf("%i\n",sol.size()); for(auto p:sol) { printf("%i ",p.size()-1); for(auto d:p) { printf("%i ",d); } printf("\n"); }*/ return 0; }
#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...