제출 #171117

#제출 시각아이디문제언어결과실행 시간메모리
171117Ruxandra985Potemkin cycle (CEOI15_indcyc)C++14
70 / 100
1064 ms9592 KiB
#include <bits/stdc++.h> #define DIMN 1010 using namespace std; vector <int> v[DIMN]; int tt[DIMN] , f[DIMN] , sol[DIMN] , ad[DIMN][DIMN] , ok[DIMN][DIMN]; pair <int,int> mch[100010]; int elem , found , n , m; deque <int> dq; void ignoree (int x){ int i , nod , vecin; /// cel mai scurt drum de la mch[x].first la mch[x].second memset (f , 0 , sizeof(f)); memset (tt , 0 , sizeof(tt)); //if (x == 2) // printf ("a"); ok[mch[x].first][mch[x].second] = 1; ok[mch[x].second][mch[x].first] = 1; for (i=1;i<=n;i++){ if (ad[mch[x].first][i] && ad[mch[x].second][i]){ ok[mch[x].first][i] = ok[mch[x].second][i] = 1; ok[i][mch[x].first] = ok[i][mch[x].second] = 1; } } dq.clear(); dq.push_back(mch[x].first); f[mch[x].first] = 1; while (!dq.empty()){ nod = dq.front(); dq.pop_front(); if (nod == mch[x].second){ if (f[mch[x].second] > 3) found = 1; break; } for (i=0;i<v[nod].size();i++){ vecin = v[nod][i]; if (ok[nod][vecin]){ if (vecin != mch[x].second) f[vecin] = 2; continue; } if (!f[vecin]){ f[vecin] = 1 + f[nod]; tt[vecin] = nod; dq.push_back(vecin); } } } ok[mch[x].first][mch[x].second] = 0; ok[mch[x].second][mch[x].first] = 0; for (i=1;i<=n;i++){ if (ad[mch[x].first][i] && ad[mch[x].second][i]){ ok[mch[x].first][i] = ok[mch[x].second][i] = 0; ok[i][mch[x].first] = ok[i][mch[x].second] = 0; } } if (found){ nod = mch[x].second; while (nod){ sol[++elem] = nod; nod = tt[nod]; } } } int main() { FILE *fin = stdin; FILE *fout = stdout; int i; fscanf (fin,"%d%d",&n,&m); for (i=1;i<=m;i++){ fscanf (fin,"%d%d",&mch[i].first,&mch[i].second); v[mch[i].first].push_back(mch[i].second); v[mch[i].second].push_back(mch[i].first); ad[mch[i].first][mch[i].second] = 1; ad[mch[i].second][mch[i].first] = 1; } for (i=1;i<=m;i++){ /// daca ignoram muchia i ignoree (i); if (found) break; } if (!found) fprintf (fout,"no"); else { for (i=1;i<=elem;i++) fprintf (fout,"%d ",sol[i]); } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

indcyc.cpp: In function 'void ignoree(int)':
indcyc.cpp:36:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (i=0;i<v[nod].size();i++){
                  ~^~~~~~~~~~~~~~
indcyc.cpp: In function 'int main()':
indcyc.cpp:71:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     fscanf (fin,"%d%d",&n,&m);
     ~~~~~~~^~~~~~~~~~~~~~~~~~
indcyc.cpp:73:16: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         fscanf (fin,"%d%d",&mch[i].first,&mch[i].second);
         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...