제출 #1223296

#제출 시각아이디문제언어결과실행 시간메모리
1223296_rain_Papričice (COCI20_papricice)C++20
0 / 110
3 ms4932 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;

const int N=(int)2e5;
	vector<int>ke[N+2];
	int sub[N+2],n;
	bool ban[N+2]={};
	
	void add_canh(int u,int v){
		ke[u].push_back(v) , ke[v].push_back(u);
		return;
	}
	void dfs(int u,int p){
		sub[u]=1;
		for(auto&v:ke[u]){
			if (v==p) continue;
			dfs(v,u);
			sub[u]+=sub[v];
		}
		return;
	}
	
	int mx=0,mn=0;
	int ans=(int)1e9;
	
	void re_dfs(int u,int p){
		sub[u]=1;
		for(auto&v:ke[u]){
			if (v==p) continue;
			if (ban[v]) continue;
			re_dfs(v,u);
			sub[u]+=sub[v];
		}
	}
	void dfs_calc(int u,int p){
		for(auto&v:ke[u]){
			if (v==p||ban[v]) continue;
			
			int tmp_mx=max(mx,max(sub[u]-sub[v],sub[v]));
			int tmp_mn=min(mn,min(sub[u]-sub[v],sub[v]));
			ans=min(ans,tmp_mx-tmp_mn);
			sub[u]-=sub[v];
			sub[v]+=sub[u];
			
			dfs_calc(v,u);
			
			sub[v]-=sub[u];
			sub[u]+=sub[v];
		}
	}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0) ; cout.tie(0);
	#define task "main"
	if (fopen(task".inp","r")){
		freopen(task".inp","r",stdin);
		freopen(task".out","w",stdout);
	}
	
	cin>>n;
	for(int i=1;i<n;++i){
		int u,v; cin>>u>>v;
		add_canh(u,v);
	}
	dfs(1,0);
	int need=n/3;
	int v=-1,dis=(int)1e9;
	for(int i=1;i<=n;++i) if (dis>abs(need-sub[i])){
		v=i;
		dis=abs(need-sub[i]);
	}
	ban[v]=true;
	mx=sub[v],mn=sub[v];
	
	re_dfs(1,0);
	dfs_calc(1,0);
	cout<<ans;
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

papricice.cpp: In function 'int main()':
papricice.cpp:58:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   58 |                 freopen(task".inp","r",stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
papricice.cpp:59:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   59 |                 freopen(task".out","w",stdout);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...