• 还没写好的博客


    #include<iostream>
    #include<cstring>
    #include<queue>
    #include<vector>
    using namespace std;
    const int maxn = 3e5+11;
    vector<int>G[maxn];
    void add(int x,int y){
    	G[x].push_back(y);
    }
    int n,m;
    int dp[maxn];
    int son[maxn];
    int dfs(int x,int fa){
    	int ans = 0;
    	for(int i=0;i<G[x].size();i++){
    		int p = G[x][i];
    		if(p == fa) continue;
    		dfs(p,x);
    		son[x] ++;
    		ans = max(ans,dp[p]);
    	}
    	if(son[x] == 0){
    		dp[x] = 1;
    		return 0;
    	}
    	dp[x] = ans + son[x];
    	return 0;
    }
    
    int main(){
    	scanf("%d%d",&n,&m);
    	for(int i=0;i<m;i++){
    		int x,y;
    		scanf("%d%d",&x,&y);
    		add(x,y);
    		add(y,x);
    	}
    	cout<<endl; 
    	dfs(1,-1);
    	for(int i=1;i<=n;i++){
    		cout<<dp[i]<<" "<<i<<endl;
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    JSTL和EL
    JSP
    Servlet基础知识
    JSON基础知识
    jQuery基础知识
    ajax基础知识
    索引实战
    反射
    设计模式
    JVM的异常处理
  • 原文地址:https://www.cnblogs.com/lesning/p/13902477.html
Copyright © 2020-2023  润新知