• 家族(并查集)


    http://wikioi.com/problem/1073/

    典型并查集,只需要判断find(  x ) 和find( y) 是否在一个集合里面即可

    // File Name: wiki1073.cpp
    // Author: bo_jwolf
    // Created Time: 2013年08月17日 星期六 16时36分22秒
    
    #include<vector>
    #include<list>
    #include<map>
    #include<set>
    #include<deque>
    #include<stack>
    #include<bitset>
    #include<algorithm>
    #include<functional>
    #include<numeric>
    #include<utility>
    #include<sstream>
    #include<iostream>
    #include<iomanip>
    #include<cstdio>
    #include<cmath>
    #include<cstdlib>
    #include<cstring>
    #include<ctime>
    
    using namespace std;
    const int maxn = 5005 ;
    int fa[ maxn ] ;
    struct node
    {
    	int x , y ;
    }edge[ maxn << 2 ] ;
    
    int find( int x )
    {
    	return fa[ x ] = fa[ x ] == x ? x : find( fa[ x ] ) ;
    }
    
    
    int main()
    {
    	int n , m , p  ;
    	while( cin >> n >> m >> p )
    	{
    		for( int i = 0 ; i <= n ; ++i ) 
    			fa[ i ] = i ;
    		for( int i = 1 ; i <= m ; ++i )
    		{
    			cin >> edge[ i ].x >> edge[ i ].y ;
    		}
    		for( int i = 1 ; i <= m ; ++i )
    		{
    			int x = find( edge[ i ].x ) ;
    			int y = find( edge[ i ].y ) ;
    			if( x != y )
    			{
    				fa[ x ] = y ;
    			}
    		}
    		int x , y ;
    		for( int i = 1 ; i <= p ; ++i )
    		{
    			cin >> x >> y ;
    			if( find( x ) == find( y ) )
    				cout << "Yes" << endl ;
    			else
    				cout << "No" << endl ;
    		}
    	}
    	return 0;
    }


  • 相关阅读:
    linux下好用的软件
    linux下常见目录的介绍
    slam相关链接
    GPS 使用的三种坐标系 ECEF、ENU、LLA坐标系
    平面度计算 C++实现
    QT Cmake添加srv和msg
    pcl点云与ros之间的数据类型转换
    ROS分布式设置
    qt中播放视频和音频
    linux tips
  • 原文地址:https://www.cnblogs.com/james1207/p/3265313.html
Copyright © 2020-2023  润新知