제출 #185475

#제출 시각아이디문제언어결과실행 시간메모리
185475nicolaalexandraPolitical Development (BOI17_politicaldevelopment)C++14
77 / 100
3067 ms25712 KiB
#include <bits/stdc++.h> #define DIM 50010 using namespace std; priority_queue <pair<int,int>, vector <pair<int,int> >, greater<pair<int,int> > > H; set <int> L[DIM]; int n,k,i,j,sol,el,nod; int v[DIM],x[DIM],viz[DIM],f[DIM],g[DIM]; int verif (int pas, int nod){ for (int i=1;i<pas;++i){ int vecin = x[i]; if (L[nod].find(vecin) == L[nod].end()) return 0; if (L[vecin].find(nod) == L[vecin].end()) return 0; } return 1; } void back (int pas){ sol = max (sol,pas-1); if (pas >= k) return; for (int i=1;i<=el;++i){ if (!f[i] && v[i] > x[pas-1] && verif(pas,v[i])){ x[pas] = v[i]; f[i] = 1; back(pas+1); f[i] = 0; } } } void get_max_clique (int nod){ el = 0; for (auto vecin:L[nod]) v[++el] = vecin; sort (v+1,v+el+1); back (1); } int main (){ FILE *fin = stdin; FILE *fout = stdout; fscanf (fin,"%d%d",&n,&k); for (i=1;i<=n;++i){ fscanf (fin,"%d",&g[i]); for (j=1;j<=g[i];++j){ fscanf (fin,"%d",&nod); L[i].insert(nod+1); } H.push (make_pair(g[i],i)); } while (!H.empty()){ int nod = H.top().second; int grad = H.top().first; H.pop(); if (grad != g[nod]) /// inseamna ca nu e ala cu gradul minim continue; /// vreau sa gasesc clica maxima din care poate face parte nod get_max_clique (nod); viz[nod] = 1; /// acum il elimin pe nod si toate muchiile for (auto vecin:L[nod]){ if (viz[vecin]) continue; /// nu am incercat sa obtin clica de aici deloc viz[vecin] = 1; --g[vecin]; L[vecin].erase(L[vecin].find(nod)); H.push(make_pair(g[vecin],vecin)); } L[nod].clear(); } fprintf(fout,"%d",sol+1); return 0; }

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

politicaldevelopment.cpp: In function 'int main()':
politicaldevelopment.cpp:43:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     fscanf (fin,"%d%d",&n,&k);
     ~~~~~~~^~~~~~~~~~~~~~~~~~
politicaldevelopment.cpp:45:16: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         fscanf (fin,"%d",&g[i]);
         ~~~~~~~^~~~~~~~~~~~~~~~
politicaldevelopment.cpp:47:20: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             fscanf (fin,"%d",&nod);
             ~~~~~~~^~~~~~~~~~~~~~~
#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...