Submission #786052

# Submission time Handle Problem Language Result Execution time Memory
786052 2023-07-18T00:41:32 Z KN200711 Bosses (BOI16_bosses) C++14
100 / 100
879 ms 928 KB
# include <bits/stdc++.h>
using namespace std;

vector<int> ps[5001], edge[5001];
int ck, ans, ct[5001];
bool vis[5001];
int N;

void dfs(int a) {
	ct[a] = 0;
	for(int k=0;k<edge[a].size();k++) {
		dfs(edge[a][k]);
		ct[a] += ct[edge[a][k]];
	}
	ct[a]++;
	ck += ct[a];
}

void solve(int a) {
	ck = 0;
	for(int i=1;i<=N;i++) {
		vis[i] = 0;
		edge[i].clear();
	}
	
	int cs = 1;
	queue<int> S;
	S.push(a);
	vis[a] = 1;
	while(!S.empty()) {
		int b = S.front();
	//	cout<<b<<endl;
		S.pop();
		for(int c=0;c<ps[b].size();c++) {
			if(!vis[ps[b][c]]) {
				vis[ps[b][c]] = 1;
				S.push(ps[b][c]);
				edge[b].push_back(ps[b][c]);
				cs++;
			}
		}
	}
	if(cs != N) return;
	
	dfs(a);
	
//	cout<<a<<" "<<ck<<endl;
	
	ans = min(ans, ck);
}

int main() {
	scanf("%d", &N);
	for(int i=1;i<=N;i++) {
		int K;
		scanf("%d", &K);
		while(K--) {
			int A;
			scanf("%d", &A);
			ps[A].push_back(i);
		}
	}
	
	ans = 1e9;
	for(int i=1;i<=N;i++) {
		solve(i);
	}
	
	printf("%d\n", ans);
}

Compilation message

bosses.cpp: In function 'void dfs(int)':
bosses.cpp:11:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 |  for(int k=0;k<edge[a].size();k++) {
      |              ~^~~~~~~~~~~~~~~
bosses.cpp: In function 'void solve(int)':
bosses.cpp:34:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |   for(int c=0;c<ps[b].size();c++) {
      |               ~^~~~~~~~~~~~~
bosses.cpp: In function 'int main()':
bosses.cpp:53:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   53 |  scanf("%d", &N);
      |  ~~~~~^~~~~~~~~~
bosses.cpp:56:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   56 |   scanf("%d", &K);
      |   ~~~~~^~~~~~~~~~
bosses.cpp:59:9: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   59 |    scanf("%d", &A);
      |    ~~~~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 1 ms 468 KB Output is correct
3 Correct 1 ms 544 KB Output is correct
4 Correct 1 ms 468 KB Output is correct
5 Correct 1 ms 596 KB Output is correct
6 Correct 1 ms 548 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 1 ms 468 KB Output is correct
3 Correct 1 ms 544 KB Output is correct
4 Correct 1 ms 468 KB Output is correct
5 Correct 1 ms 596 KB Output is correct
6 Correct 1 ms 548 KB Output is correct
7 Correct 1 ms 468 KB Output is correct
8 Correct 1 ms 468 KB Output is correct
9 Correct 1 ms 544 KB Output is correct
10 Correct 1 ms 540 KB Output is correct
11 Correct 1 ms 544 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 1 ms 468 KB Output is correct
3 Correct 1 ms 544 KB Output is correct
4 Correct 1 ms 468 KB Output is correct
5 Correct 1 ms 596 KB Output is correct
6 Correct 1 ms 548 KB Output is correct
7 Correct 1 ms 468 KB Output is correct
8 Correct 1 ms 468 KB Output is correct
9 Correct 1 ms 544 KB Output is correct
10 Correct 1 ms 540 KB Output is correct
11 Correct 1 ms 544 KB Output is correct
12 Correct 4 ms 596 KB Output is correct
13 Correct 5 ms 680 KB Output is correct
14 Correct 142 ms 852 KB Output is correct
15 Correct 19 ms 736 KB Output is correct
16 Correct 549 ms 860 KB Output is correct
17 Correct 879 ms 928 KB Output is correct
18 Correct 876 ms 920 KB Output is correct