Submission #100378

#TimeUsernameProblemLanguageResultExecution timeMemory
100378shafinalamBosses (BOI16_bosses)C++14
100 / 100
589 ms760 KiB
#include <bits/stdc++.h>

using namespace std;

const int mx = 1e5+5;
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;
typedef pair<int,int>pii;
typedef pair<int,pii>piii;

#define  sf scanf
#define  pf printf

#define  input freopen("input.txt","r",stdin)
#define  output freopen("output.txt","w",stdout)

#define  inf 1e16
#define  ff first
#define  ss second
#define  MP make_pair
#define  pb push_back
#define  all(v) v.begin(), v.end()
#define  printcase(cases) printf("Case %d:", cases);
#define  Unique(a) a.erase(unique(a.begin(),a.end()),a.end())
#define  FAST  ios_base::sync_with_stdio(0);cout.tie(0)
#define  endl printf("\n")
#define  __lcm(a, b) ((a*b)/__gcd(a, b))

int  Set(int N,int pos)
{
    return N=N | (1<<pos);
}
int  reset(int N,int pos)
{
    return N= N & ~(1<<pos);
}
bool check(int N,int pos)
{
    return (bool)(N & (1<<pos));
}

int dis[5005];
int n;
vector<int> adj[5005];

int bfs(int s)
{
    memset(dis, -1, sizeof dis);
    dis[s] = 1;
    queue<int>q;
    q.push(s);
    while(!q.empty())
    {
        s = q.front();
        q.pop();
        for(auto i : adj[s])
        {
            if(dis[i] != -1) continue;
            dis[i] = dis[s] + 1;
            q.push(i);
        }
    }
    int ret = 0;
    for(int i=1; i<=n; i++)
    {
        if(dis[i] == -1) return -1;
        ret += dis[i];
    }
    return ret;
}
int main()
{
    sf("%d", &n);
    for(int i = 1; i <= n; i++)
    {
        int k;
        scanf("%d", &k);
        while(k--)
        {
            int x;
            sf("%d", &x);
            adj[x].push_back(i);
        }
    }
    int ans = INT_MAX;
    for(int i = 1; i <= n; i++)
    {
        int x = bfs(i);
        if(x == -1) continue;
        ans = min(ans, x);
    }
    pf("%d\n", ans);
    return 0;
}

Compilation message (stderr)

bosses.cpp: In function 'int main()':
bosses.cpp:74:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     sf("%d", &n);
       ^
bosses.cpp:78:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &k);
         ~~~~~^~~~~~~~~~
bosses.cpp:82:15: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             sf("%d", &x);
               ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...