zoukankan      html  css  js  c++  java
  • Codeup 问题 A: 第一题 (BFS 做法)

    一切杀不死我的,都将使我强大! 

    题目网站:  http://codeup.cn/problem.php?cid=100000620&pid=0 

    题目描述

    该题的目的是要你统计图的连通分支数。

    输入

    每个输入文件包含若干行,每行两个整数i,j,表示节点i和j之间存在一条边。

    输出

    输出每个图的联通分支数。

    样例输入

    1 4
    4 3
    5 5
    

    样例输出

    2
    
    #include<iostream>
    #include<queue>
    #include<cstring>
    #include<vector>
    using namespace std;
    vector<int>map[1000010];//坑啊,数组不开到这么大就会运行错误,大坑啊,妈的题目又不给数据范围 
    bool vis[1000010] ={false} ; 
    bool HASH[1000010]={false};
    void bfs(int u)
    {
    	queue<int>q;
    	q.push(u);
    	vis[u] = true;
    	while (!q.empty())
    	{
    		int top = q.front();
    		q.pop();
    		for (int i=0;i<map[top].size();i++)
    		{
    			int v = map[top][i];
    			if (vis[v]==false)
    			{
    				q.push(v);
    				vis[v] = true;
    			}
    		}
    	}
    }
    int BFS(int n)
    {
    	int ans=0;
    	for (int u=0;u<=n;u++)
    	{
    		if (vis[u]==false && HASH[u]==true)
    		{
    			bfs(u);
    			ans++;
    		}
    	}
    	return ans;
    }
    
    int main()
    {
    	int n=0,m,j,k,i,T,a,c,b,d;
    	while(cin>>a>>b)
    	{   
    	    n = max(n,max(a,b));
    		map[a].push_back(b);	
    		map[b].push_back(a);
    		HASH[a] = HASH[b] = true;
    	
    	}
    	cout<<BFS(n)<<endl;
    	return 0; 
    }
  • 相关阅读:
    20135313_exp4
    20135313_exp5
    学习分块
    学习BM算法
    学习笛卡尔树
    【数学】Eddy Walker
    【bitset】Kth Minimum Clique
    【搜索】n的约数
    【搜索】Partition problem
    【信息学奥赛一本通 提高组】第四章 广搜的优化技巧
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451449.html
Copyright © 2011-2022 走看看