Submission #23705

#TimeUsernameProblemLanguageResultExecution timeMemory
23705HiasatFriend (IOI14_friend)C++14
23 / 100
0 ms3360 KiB
#include "friend.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> adj[1002];

int c[1002], vis[1001], vsId, match[1001];

vector<int> fv[2];


void dfs(int u , int color) {
	if (c[u] != -1) {
		assert(c[u] == color);
		return;
	}
	c[u] = color;
	fv[color].push_back(u);
	for (int i = 0; i < adj[u].size(); ++i) {
		dfs(adj[u][i], !color);
	}
}
bool findMatch(int u) {
	vis[u] = vsId;
	for (int i = 0; i < adj[u].size(); ++i) {
		int v = adj[u][i];
		if (match[v] == -1 || vis[match[v]] != vsId && findMatch(match[v])) {
			match[v] = u;
			return true;
		}
	}
	return false;
}
int findSample(int n, int confidence[], int host[], int protocol[]) {
	memset(c, -1, sizeof c);
	for (int i = 1 ; i <= n - 1; i++) {
		if (protocol[i] == 0) {
			adj[host[i]].push_back(i);
			adj[i].push_back(host[i]);
		}
		if (protocol[i] == 1) {
			for (int j = 0 ; j < adj[host[i]].size(); j++) {
				int v = adj[host[i]][j];
				adj[v].push_back(i);
				adj[i].push_back(v);
			}
		}
	}
	memset(match, -1, sizeof match);
	int cur = 0;
	for (int i = 0; i < n; ++i) {
		if (c[i] != -1)
			continue;
		dfs(i, 0);
	}
	for (int j = 0 ; j < fv[0].size(); j++) {
		int v = fv[0][j];
		vsId++;
		if (findMatch(v))
			cur++;
	}
	return n - cur;
}

Compilation message (stderr)

friend.cpp: In function 'void dfs(int, int)':
friend.cpp:20:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < adj[u].size(); ++i) {
                    ^
friend.cpp: In function 'bool findMatch(int)':
friend.cpp:26:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < adj[u].size(); ++i) {
                    ^
friend.cpp:28:47: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   if (match[v] == -1 || vis[match[v]] != vsId && findMatch(match[v])) {
                                               ^
friend.cpp: In function 'int findSample(int, int*, int*, int*)':
friend.cpp:43:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for (int j = 0 ; j < adj[host[i]].size(); j++) {
                       ^
friend.cpp:57:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int j = 0 ; j < fv[0].size(); j++) {
                     ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...