题解 | #第一题#

第一题

http://www.nowcoder.com/practice/7c29cdfa28274c86afc9e88c07448a10

dfs

#include<iostream>
#include<vector>
#include<string>
#include<map>
using namespace std;
#define MAX 1<<19
vector< vector<int> > v(MAX);
map<int, bool>visited;
int num = 0;//连通分量个数
//从k结点开始dfs
void dfs(int k) {
	for(int i=0;i<v[k].size();i++)
		if (!visited[v[k][i]]) {
			visited[v[k][i]] = true;
			dfs(v[k][i]);
		}
}
int main() {
	int a, b;
	string s = "start";
	while (getline(cin,s) ){
		if (s == "")break;
		int pos = s.find(" ", 0);
		a = stoi(s.substr(0, pos));
		b = stoi(s.substr(pos + 1, s.size() - pos - 1));
		//cout << "a=" << a << ", b=" << b << endl;
		v[a].push_back(b);
		v[b].push_back(a);
		visited[a] = false;
		visited[b] = false;
	}
	for (auto it = visited.begin(); it != visited.end();it++) {
		int id = it->first;
		if (!visited[id]) {
				
			//cout << "num=" << num << " ,id=" <<id<< endl;
			num++;
			visited[id] = true;
			dfs(id);
		}
	}
	cout << num << endl;

	return 0;
}
全部评论

相关推荐

哈哈哈哈哈哈哈哈哈哈这个世界太美好了
凉风落木楚山秋:毕业出路老师不管,你盖个章他好交差就完事了,等你盖完毕业了就不关他事情了
点赞 评论 收藏
分享
lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务