样例对的,但是0分
  • 板块P1395 会议
  • 楼主Xeffry
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/1/7 19:49
  • 上次更新2023/10/24 05:15:13
查看原帖
样例对的,但是0分
539726
Xeffry楼主2023/1/7 19:49
#include<bits/stdc++.h>
using namespace std;
struct vla{
	vector<int>next;
	int son,ans;
}pop[50003];
int n,ans=INT_MAX,ansx=1;
void dfs(int x,int dep){
	pop[x].ans=dep;
	pop[x].son=1;
	for(int i=0;i<pop[x].next.size();i++){
		dfs(pop[x].next[i],dep+1);
		pop[x].ans+=pop[pop[x].next[i]].ans;
		pop[x].son+=pop[pop[x].next[i]].son;
	}
}
void dff(int x,int last){
	if(x!=1){
		last+=n-2*pop[x].son;
		pop[x].ans=last;	
	}
	for(int i=0;i<pop[x].next.size();i++){
		dff(pop[x].next[i],last);
	}
}
int main(){
	cin>>n;
	for(int i=1;i<n;i++){
		int x,y;
		cin>>x>>y;
		if(x>y)swap(x,y);
		pop[x].next.push_back(y);
	}
	dfs(1,0);
	dff(1,pop[1].ans);
	for(int i=1;i<=n;i++){
		if(ans>pop[i].ans){
			ans=pop[i].ans;
			ansx=i;
		}
		cout<<pop[i].ans<<endl;
	}
	cout<<ansx<<" "<<ans;
	return 0;
}

下面是别人发的正确代码


#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
int n;
struct node{
	vector<int>next;//邻接表 
	int num;//子树包含节点数	
	int ans=0; 
	int deep=0;
}a[50005];
bool bj[50005];
void dfs(int now,int deep){
	bj[now]=1;
	a[now].ans=deep;
	a[now].num=1;
	for(int i=0;i<a[now].next.size();i++){
		int ne=a[now].next[i];
		if(bj[ne]==0){
	//		bj[ne]=1;	
			dfs(ne,deep+1);
			a[now].ans+=a[ne].ans;
			a[now].num+=a[ne].num;
		}
	}
}
void dfs2(int now,int x){
	bj[now]=1;
	if(now!=1){
		int nu=a[now].num;
		x+=n-2*nu;
		a[now].ans=x;
	}
	for(int i=0;i<a[now].next.size();i++){
		int ne=a[now].next[i];
		if(bj[ne]==0){
			//bj[ne]=1;	
			dfs2(ne,x);
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n-1;i++){
		int x,y;
		cin>>x>>y;
		a[x].next.push_back(y);
		a[y].next.push_back(x);
	}
	dfs(1,0);
	memset(bj,0,sizeof(bj));
	dfs2(1,a[1].ans);
	int mib,minx=2147483647;
	for(int i=1;i<=n;i++){
		if(minx>a[i].ans){
			minx=a[i].ans;
			mib=i;
		}
	}
	cout<<mib<<" "<<minx;
	return 0;
}

为什么错啊,我明明按照别人的代码改了啊? 求dalao解答

2023/1/7 19:49
加载中...