Submission #84183

#TimeUsernameProblemLanguageResultExecution timeMemory
84183nikolapesic2802Untitled (POI11_smi)C++14
60 / 100
3064 ms133928 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]; 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(int i=0;i<graf[tr].size();i++) { if(!visited[tr][i]) { int p=graf[tr][i].first; int j=graf[tr][i].second; visited[tr][i]=1; visited[p][j]=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() { /*int n=1e3,m=1e6; //scanf("%i %i",&n,&m); for(int i=1;i<=n;i++) { for(int j=0;j<1000;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 t=clock(); 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].size()}); graf[b].pb({a,graf[a].size()-1}); visited[a].pb(0); visited[b].pb(0); 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) { while(stk.size()) stk.pop(); solve(i); vis[i]--; } } 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:34: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:122: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:127: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...