답안 #951491

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
951491 2024-03-22T03:44:16 Z Muhammad_Aneeq Bosses (BOI16_bosses) C++17
100 / 100
884 ms 1028 KB
/*
بسم الله الرحمن الرحيم
Author:
                          (:Muhammad Aneeq:)
*/

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int const N=5e3+10;
vector<int>nei[N]={};
bool vis[N]={};
vector<int>gr[N]={};
int val[N]={};
long long cost=0;
void make_gr(int n)
{
    queue<int>Q;
    Q.push(n);
    while (Q.size())
    {
        int s=Q.front();
        Q.pop();
        for (auto i:gr[s])
            if (!vis[i])
            {
                vis[i]=1;
                nei[s].push_back(i);
                Q.push(i);
            }
    }
}   
void dfs(int n)
{
    int val1=0;
    for (auto i:nei[n])
    {
        dfs(i);
        val1+=val[i];
    }
    val[n]=val1+1;
    cost+=val[n];
}
inline void solve()
{
    int n;
    cin>>n;
    for (int i=1;i<=n;i++)
    {
        int k;
        cin>>k;
        while (k--)
        {
            int x;
            cin>>x;
            gr[x].push_back(i);
        }
    }
    long long ans=1e15+10;
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=n;j++)
        {
            vis[j]=0,nei[j]={};
            val[i]=0;
        }
        vis[i]=1;
        make_gr(i);
        bool w=0;
        for (int i=1;i<=n;i++)
        {
            if (!vis[i])
                w=1;
        }
        if (w)
            continue;
        cost=0;
        dfs(i);
        ans=min(ans,cost);
    }
    cout<<ans<<endl;
}
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
        solve();
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 600 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 0 ms 600 KB Output is correct
5 Correct 1 ms 856 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 600 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 0 ms 600 KB Output is correct
5 Correct 1 ms 856 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 1 ms 600 KB Output is correct
8 Correct 1 ms 604 KB Output is correct
9 Correct 0 ms 604 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 1 ms 856 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 600 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 0 ms 600 KB Output is correct
5 Correct 1 ms 856 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 1 ms 600 KB Output is correct
8 Correct 1 ms 604 KB Output is correct
9 Correct 0 ms 604 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 1 ms 856 KB Output is correct
12 Correct 4 ms 604 KB Output is correct
13 Correct 3 ms 604 KB Output is correct
14 Correct 157 ms 1008 KB Output is correct
15 Correct 28 ms 860 KB Output is correct
16 Correct 540 ms 968 KB Output is correct
17 Correct 884 ms 1024 KB Output is correct
18 Correct 866 ms 1028 KB Output is correct