제출 #155940

#제출 시각아이디문제언어결과실행 시간메모리
155940aloo123Bosses (BOI16_bosses)C++14
0 / 100
2 ms504 KiB
#include <bits/stdc++.h> #define ll long long #define ld long double #define f first #define s second #define mp make_pair #define pb push_back #define vll vector<ll> #define fastio ios_base::sync_with_stdio(0),cin.tie(NULL),cout.tie(NULL) using namespace std; const ll N = 5005; const ll MOD = 1e9+7; vll adj[N]; vll adj2[N]; ll dp[N]; bool vis[N]; void dfs(ll cur,ll par) { dp[cur]=0; vis[cur]=true; for(auto v:adj[cur]) { if(v==par) continue; if(vis[v])continue; dfs(v,cur); dp[cur]+=dp[v]; } dp[cur]+=1; } int main() { fastio; ll n; cin >> n; bool poss=true; ll src; for(int i =1;i<=n;i++) { ll k; cin >> k; if(k==0) { src=i; poss=false; } for(int j =1;j<=k;j++) { ll x; cin >> x; adj[x].pb(i); } } if(!poss) { dfs(src,-1); ll sum=0; for(int i =1;i<=n;i++) sum+=dp[i]; cout<<sum<<endl; return 0; } ll ans = LLONG_MAX; for(int i=1;i<=n;i++) { for(int j =1;j<=n;j++) dp[j] =0,vis[j]=false; dfs(i,-1); ll co=0; for(int j =1;j<=n;j++) { if(vis[j])co++; } if(co==n) { //cout << i << " " << dp[i] << endl; ll su=0; for(int j =1;j<=n;j++)su+=dp[j]; ans=min(ans,su); } } cout << ans << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...