제출 #1348469

#제출 시각아이디문제언어결과실행 시간메모리
1348469Faisal_SaqibComparing Plants (IOI20_plants)C++17
0 / 100
4090 ms13120 KiB
#include "plants.h"

#include <bits/stdc++.h>
using namespace std;
int n;
const int N=2e5+10;
bool vis[N];
vector<int> ma[N];
bool check(int x,int y)
{
	// cout<<"solving "<<x<<' '<<y<<endl;
	for(int i=0;i<=n;i++)vis[i]=0;
	queue<int> q;
	q.push(x);
	vis[x]=1;
	while(q.size())
	{
		int t=q.front();
		// cout<<"at "<<t<<endl;
		q.pop();
		for(auto z:ma[t])
		{
			if(!vis[z])
			{
				vis[z]=1;
				q.push(z);
			}
		}
	}
	return vis[y];
}
void init(int k, std::vector<int> r) {
	n=r.size();
	for(int i=0;i<n;i++)
		ma[i].clear();
	// for(int i=0;i<n;i++)
	// {
	// 	if(r[i]==0)
	// 	{
	// 		cout<<"Add "<<i<<endl;
	// 		for(int j=1;j<=k-1;j++)
	// 		{
	// 			cout<<i<<' '<<(i+j)%n<<endl;
	// 			ma[i].push_back((i+j)%n);
	// 		}
	// 	}
	// 	if(r[i]==k-1)
	// 	{
	// 		for(int j=1;j<=k-1;j++)
	// 		{
	// 			cout<<(i+j)%n<<' '<<i<<endl;
	// 			ma[(i+j)%n].push_back(i);
	// 		}
	// 	}
	// }
	for(int it=0;it<n;it++)
	{
		for(int i=0;i<n;i++)
		{
			set<int> cr,ct;
			int gr=0,ls=0;
			for(int j=1;j<=k-1;j++)
			{
				if(check((i+j)%n,i))
				{
					gr++;
					cr.insert(j);
				}
				if(check(i,(i+j)%n)) 
				{
					ls++;
					ct.insert(j);
				}
			}
			if(r[i]==gr)
			{
				for(int j=1;j<=k-1;j++)
				{
					if(cr.find(j)==cr.end())
					{
						ma[i].push_back((i+j)%n);
					}
				}
			}
			if(k-1-r[i] == ls)
			{
				for(int j=1;j<=k-1;j++)
				{
					if(ct.find(j)==ct.end())
					{
						ma[(i+j)%n].push_back(i);
					}
				}			
			}
		}
	}
	return;
}
int compare_plants(int x, int y) {
	if(check(x,y))
	{
		return 1;
	}
	else if(check(y,x))
	{
		return -1;
	}
	else
	{
		return 0;
	}
	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...
#Verdict Execution timeMemoryGrader output
Fetching results...