Submission #126825

#TimeUsernameProblemLanguageResultExecution timeMemory
126825ekremFriend (IOI14_friend)C++98
0 / 100
3 ms504 KiB
#include "friend.h"
#include <bits/stdc++.h>
#define st first
#define nd second
#define mp make_pair
#define pb push_back
#define sol (k+k)
#define sag (k+k+1)
#define orta ((bas+son)/2)
#define coc g[node][i]
#define mod 1000000007
#define inf 1000000009
#define N 1000005
using namespace std;

typedef long long ll;
typedef pair < int , int > ii;

int n, m, cvp, ata[N], say[N], ne[N], ans[2][N];

int findSample(int n,int c[],int h[],int p[]){
	ata[0] = ++m;
	ans[0][1] = 1;
	for(int i = 1; i < n; i++){
		if(!say[h[i]] and p[i] == 1){
			// cout << "AMK" << endl;
			ata[i] = ++m;
			ans[0][m]++;
			ne[i] = 0;
			continue;
		}

		ata[i] = ata[h[i]];
		say[i]++;
		say[h[i]]++;
		if(p[i] == 0)
			ne[i] = 1 - ne[h[i]];
		else
			ne[i] = ne[h[i]];
		ans[ne[i]][ata[i]]++;
	}
	for(int i = 1; i <= m; i++)
		cvp += max(ans[0][i], ans[1][i]);
	return cvp;
}






// #define __MAXSIZE__ 100002
// using namespace std;
// int confidence[__MAXSIZE__];
// int host[__MAXSIZE__];
// int protocol[__MAXSIZE__];
// int main(void){
// 	freopen("in.txt", "r", stdin);
// 	freopen("outt.txt", "w", stdout);
// 	int n,i;
// 	assert(scanf("%d",&n)==1);
// 	for(i=0;i<n;i++)
// 		assert(scanf("%d",&confidence[i])==1);
// 	for(i=1;i<n;i++)
// 		assert(scanf("%d %d",&host[i],&protocol[i])==2);
// 	printf("%d\n",findSample(n,confidence,host,protocol));
// 	return 0;
// }
#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...