Submission #84197

#TimeUsernameProblemLanguageResultExecution timeMemory
84197nikolapesic2802Untitled (POI11_smi)C++14
60 / 100
3065 ms91284 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<pair<int,int> > > graf(N); vector<int> visited(N*10); vector<vector<int> > sol; vector<int> stk; vector<int> vis(N); void solve(int tr) { stk.pb(tr); int cnt=0; for(int i=0;i<graf[tr].size();i++) { if(!visited[graf[tr][i].second]) { cnt++; int p=graf[tr][i].first; visited[graf[tr][i].second]=1; degree[tr]--; degree[p]--; if(cnt>1) stk.pb(tr); solve(p); } } } 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() { /*int n=1e5,m=1e6; //scanf("%i %i",&n,&m); for(int i=1;i<=n;i++) { for(int j=0;j<10;j++){ int a=i,b=(i+j)%n+1,s=1,t=0; if(a==b) continue; // printf("%i %i\n",a,b); //scanf("%i %i %i %i",&a,&b,&s,&t); if(s!=t) { graf[a].pb({b,graf[b].size()}); graf[b].pb({a,graf[a].size()-1}); visited[a].pb(0); visited[b].pb(0); 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); if(a==b) assert(0); //scanf("%i %i %i %i",&a,&b,&s,&t); if(s!=t) { graf[a].pb({b,i}); graf[b].pb({a,i}); 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) { printf("NIE\n"); return 0; } } /*for(int i=1;i<=n;i++) { while(degree[i]!=0) { solve(i); } }*/ for(int i=1;i<=n;i++) { if(degree[i]>0){ solve(i); } } assert(stk.size()<1e6); vector<int> in_stk(n+1); vector<int> tr; for(auto p:stk) { //printf("%i\n",p); tr.pb(p); if(in_stk[p]) { vector<int> t; t.pb(tr.back()); tr.pop_back(); while(tr.back()!=p) { //printf("%i\n",tr.back()); t.pb(tr.back()); in_stk[tr.back()]=0; tr.pop_back(); } t.pb(tr.back()); sol.pb(t); } in_stk[p]=1; } //printf("%i\n",cnt); printf("%d\n",sol.size()); for(auto p:sol) { /*if(t-clock()>2000) assert(0);*/ printf("%d ",p.size()-1); for(auto d:p) { printf("%d ",d); } printf("\n"); } return 0; }

Compilation message (stderr)

smi.cpp: In function 'void solve(int)':
smi.cpp:18:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<graf[tr].size();i++)
                 ~^~~~~~~~~~~~~~~~
smi.cpp: In function 'int main()':
smi.cpp:133:29: 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",sol.size());
                   ~~~~~~~~~~^
smi.cpp:138:32: 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 ",p.size()-1);
                      ~~~~~~~~~~^
#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...