Submission #30081

#TimeUsernameProblemLanguageResultExecution timeMemory
30081tlwpdusUntitled (POI11_smi)C++11
100 / 100
1309 ms94520 KiB
#include <bits/stdc++.h> using namespace std; typedef pair<int,int> pii; int n, m, p; vector<pii> lis[100100]; bool chk[1000100], visit[100100]; int idx[100100]; vector<int> ans[1000100]; stack<int> st; void dfs(int here) { visit[here] = 1; for (;idx[here]<lis[here].size();) { pii tmp = lis[here][idx[here]]; idx[here]++; int there = tmp.second; if (chk[tmp.first]) continue; chk[tmp.first] = 1; dfs(there); } st.push(here); } bool good[100100]; stack<int> tt; void add() { while(!st.empty()) { int here = st.top(); st.pop(); if (good[here]) { ans[p].push_back(here); while(tt.top()!=here) { ans[p].push_back(tt.top()); good[tt.top()] = 0; tt.pop(); } ans[p].push_back(here); p++; } else { good[here] = 1; tt.push(here); } } if (tt.size()>1) printf("SIBAL\n"); while(!tt.empty()) tt.pop(); } int main() { int i; scanf("%d%d",&n,&m); for (i=0;i<m;i++) { int a, b, s, t; scanf("%d%d%d%d",&a,&b,&s,&t); --a; --b; if (s^t) { lis[a].push_back(pii(i,b)); lis[b].push_back(pii(i,a)); } } for (i=0;i<n;i++) { if (lis[i].size()%2) { printf("NIE\n"); return 0; } } for (i=0;i<n;i++) { if (visit[i]) continue; dfs(i); add(); } printf("%d\n",p); for (i=0;i<p;i++) { printf("%d ",(int)ans[i].size()-1); for (int &v : ans[i]) printf("%d ",v+1); printf("\n"); } return 0; }

Compilation message (stderr)

smi.cpp: In function 'void dfs(int)':
smi.cpp:16:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (;idx[here]<lis[here].size();) {
                 ^
smi.cpp: In function 'int main()':
smi.cpp:50:21: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&m);
                     ^
smi.cpp:53:32: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d%d%d",&a,&b,&s,&t); --a; --b;
                                ^
#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...