zoukankan      html  css  js  c++  java
  • poj 1330

    此题用的是并查集的思路,时间很慢,应该有更好的思路,但以目前的知识只能做成这样

    #include <iostream>
    using namespace std;
    const int maxn=10001;
    struct UFSTree
    {
    	int data;
    	int parent;
    	int rank;
    
    }t[maxn];
    int N;
    void init()
    {
    	int i;
    	for(i=0;i<N;i++)
    	{
    		t[i].data=i;
    		t[i].parent=i;
    		t[i].rank=1;
    	}
    }
    void Union(int p,int c)
    {
    	t[c].parent=p;
    	if(t[p].rank<=t[c].rank)
    	{
    	while(t[p].parent!=t[p].data)
    	{
    		t[p].rank+=t[c].rank;
    		p=t[p].parent;
    	}
    	t[p].rank+=t[c].rank;
    	}
    }
    int find(int n1,int n2)
    {
    	if(t[n1].rank==t[n2].rank)
    	{
    		if(t[n1].data==t[n2].data) return t[n1].data;
    		else return find(t[n1].parent,t[n2].parent);
    	}
    	else if(t[n1].rank<t[n2].rank)
    		return find(t[n1].parent,n2);
    	else
    		return find(n1,t[n2].parent);
    }
    int main()
    {
    	int T;
    	cin>>T;
    	while(T--)
    	{
    		cin>>N;	
    		init();
    		int i,p,c;
    		for(i=0;i<N-1;i++)
    		{
    			cin>>p>>c;
    			Union(p,c);
    		}
    		int n1,n2;
    		cin>>n1>>n2;
    		int oc=find(n1,n2);
    		cout<<oc<<endl;
    	}
    	return 0;
    }
    


     

  • 相关阅读:
    智联招聘
    我的Linux以及软件配置(长期更新)
    关于Git的笔记
    PHP和HTML表单
    web学习笔记——CSS整理(一)
    新开通博客园
    Thinphp模板替换
    __APP__
    大步前行
    centos 7 添加环境变量
  • 原文地址:https://www.cnblogs.com/lj030/p/3002310.html
Copyright © 2011-2022 走看看