Submission #53060

#TimeUsernameProblemLanguageResultExecution timeMemory
53060andremfqBosses (BOI16_bosses)C++17
100 / 100
851 ms1484 KiB
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <limits.h>
#include <math.h>
#include <time.h>
#include <iostream>
#include <functional>
#include <numeric>
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <string>
#include <bitset>
#include <map>
#include <set>
using namespace std;
typedef long long lint;
typedef long double llf;
typedef pair<int, int> pi;

int n;
vector<int> gph[5005];

bool vis[5005];
int sz[5005];
int par[5005];

vector<int> ord;

lint solve(int r){
	memset(vis, 0, sizeof(vis));
	memset(sz, 0, sizeof(sz));
	ord.clear();
	queue<int> que;
	que.push(r);
	vis[r] = 1;
	while(!que.empty()){
		int x = que.front();
		que.pop();
		ord.push_back(x);
		for(auto &i : gph[x]){
			if(!vis[i]){
				vis[i] = 1; 
				que.push(i);
				par[i] = x;
			}
		}
	}
	if(ord.size() != n) return 1e18;
	lint ret = 0;
	for(int i=ord.size()-1; i>=0; i--){
		sz[ord[i]]++;
		ret += sz[ord[i]];
		if(ord[i] != r){
			sz[par[ord[i]]] += sz[ord[i]];
		}
	}
	return ret;
}

int main(){
	scanf("%d",&n);
	for(int i=1; i<=n; i++){
		int t;
		scanf("%d",&t);
		for(int j=0; j<t; j++){
			int p;
			scanf("%d",&p);
			gph[p].push_back(i);
		}
	}
	lint ret = 1e18;
	for(int i=1; i<=n; i++){
		ret = min(ret, solve(i));
	}
	cout << ret;
}

Compilation message (stderr)

bosses.cpp: In function 'lint solve(int)':
bosses.cpp:53:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if(ord.size() != n) return 1e18;
     ~~~~~~~~~~~^~~~
bosses.cpp: In function 'int main()':
bosses.cpp:66:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
  ~~~~~^~~~~~~~~
bosses.cpp:69:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&t);
   ~~~~~^~~~~~~~~
bosses.cpp:72:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d",&p);
    ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...