Submission #218633

#TimeUsernameProblemLanguageResultExecution timeMemory
218633nicolaalexandraBosses (BOI16_bosses)C++14
100 / 100
1470 ms1144 KiB
#include <bits/stdc++.h> #define DIM 5010 #define INF 2000000000 using namespace std; vector <int> v[DIM],L[DIM]; int f[DIM],s[DIM],viz[DIM],g[DIM],c[DIM]; int n,i,j,nr,x,p,u; void dfs (int nod, int tata){ s[nod] = 1; for (auto vecin : L[nod]) if (vecin != tata){ dfs (vecin,nod); s[nod] += s[vecin]; } } int main (){ //ifstream cin ("date.in"); // ofstream cout ("date.out"); FILE *fin = stdin; FILE *fout = stdout; //cin>>n; fscanf (fin,"%d",&n); for (i=1;i<=n;++i){ fscanf (fin,"%d",&nr); for (j=1;j<=nr;++j){ //cin>>x; fscanf (fin,"%d",&x); v[x].push_back(i); g[i]++; } } /// mereu trb sa leg un nod de unul cat mai sus for (i=1;i<=n;++i) if (!g[i]){ c[++u] = i; f[i] = 1; } if (u){ /// am deja radacinile obligatorii for (j=1;j<=n;++j) if (!g[j] && j != i){ c[++u] = j; f[j] = 1; } p = 1; while (p <= u){ int nod = c[p]; p++; for (auto vecin : v[nod]){ if (!f[vecin]){ L[nod].push_back(vecin); //L[vecin].push_back(nod); f[vecin] = 1; c[++u] = vecin; }}} for (i=1;i<=n;++i) if (!g[i]) dfs (i,0); int sum = 0; for (i=1;i<=n;++i) sum += s[i]; //cout<<sum; fprintf(fout,"%d",sum); return 0; } /// trb sa am un singur arbore?? int sol = INF; for (i=1;i<=n;++i){ /// aleg o radacina for (j=1;j<=n;++j) L[j].clear(), f[j] = s[j] = 0; //c.clear(); p = u = 0; c[++u] = i; f[i] = 1; while (p <= u){ int nod = c[p]; p++; for (auto vecin : v[nod]){ if (!f[vecin]){ L[nod].push_back(vecin); //L[vecin].push_back(nod); f[vecin] = 1; c[++u] = vecin; }}} dfs (i,0); int sum = 0, ok = 1; for (j=1;j<=n;++j){ sum += s[j]; if (!s[j]){ ok = 0; break; } } if (ok) /// daca am toate nodurile sol = min (sol,sum); } //cout<<sol; fprintf(fout,"%d",sol); return 0; }

Compilation message (stderr)

bosses.cpp: In function 'int main()':
bosses.cpp:23:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     fscanf (fin,"%d",&n);
     ~~~~~~~^~~~~~~~~~~~~
bosses.cpp:25:16: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         fscanf (fin,"%d",&nr);
         ~~~~~~~^~~~~~~~~~~~~~
bosses.cpp:28:20: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             fscanf (fin,"%d",&x);
             ~~~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...