제출 #329223

#제출 시각아이디문제언어결과실행 시간메모리
329223iliccmarkoBosses (BOI16_bosses)C++14
67 / 100
1557 ms1004 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define endl "\n" #define INF 1000000000 #define LINF 1000000000000000LL #define pb push_back #define all(x) x.begin(), x.end() #define len(s) (int)s.size() #define test_case { int t; cin>>t; while(t--)solve(); } #define input(n, v) {for(int i = 0;i<n;i++) cin>>v[i];} #define output(n, v) {for(int i = 0;i<n;i++) cout<<v[i]<<" "; cout<<endl;} #define single_case solve(); #define line cout<<"------------"<<endl; #define ios { ios_base::sync_with_stdio(false); cin.tie(NULL); } using namespace std; int n; const int N = 5e3 + 5; vector<vector<int> > v(N); vector<vector<int> > g(N); bitset<N> vidjen; int dp[N]; int dfs(int u, int pret) { ll a = 0; ll ans = 0; for(int x : g[u]) { if(x==pret) continue; ans += dfs(x, u); a += dp[x]; } dp[u] = a + 1LL; return dp[u] + ans; } int main() { //ios scanf("%d", &n); for(int i = 0;i<n;i++) { int k; cin>>k; while(k--) { int a; cin>>a; a--; v[a].pb(i); } } int res = INF; for(int j = 0;j<n;j++) { int u = j; for(int i = 0;i<n;i++) vidjen[i] = 0; queue<int> q; q.push(u); for(int i = 0;i<n;i++) g[i].clear(); vidjen[u] = 1; while(len(q)) { int top = q.front(); q.pop(); for(int x : v[top]) { if(vidjen[x]) continue; q.push(x); g[top].pb(x); vidjen[x] = 1; } } ll ss = 1; for(int i = 0;i<n;i++) if(!vidjen[i]) {ss = 0; break;} if(!ss) continue; for(int i = 0;i<n;i++) dp[i] = 0; res = min(res, dfs(u, -1)); } printf("%d", res); return 0; }

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

bosses.cpp: In function 'int main()':
bosses.cpp:41:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   41 |     scanf("%d", &n);
      |     ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...