美团2020年8月15日测开笔试第二题

//美团第二题
//旅行问题
#include <iostream>
#include <vector>
#include<set>
#include<unordered_map>
#include<string>
using namespace std;
class MyClass{
    public:
    vector<int> v;
	void addnew(){
        int n;
        cin>>n;
        string a,b;
        unordered_map<string,int> map;
        int cnt=0;
        for(int i=0;i<n;i++)
        {
            cin>>a>>b;
            if(!map.count(a))
            {
            	map[a]=cnt;
            	v.push_back(cnt);
            	cnt++;
			}
			if(!map.count(b))
			{
				map[b]=cnt;
				v.push_back(cnt);
				cnt++;
			}
			this->un(map[a],map[b]);
        }
    }
    int sizes()
    {
    	set<int> set;
    	for(int num:v)
    	{
    		set.insert(num);
		}
		return set.size();
	}
	int find(int a)
	{
		if(v[a]!=a)
		return find(v[a]);
		return a;
	}
	void un(int a,int b)
	{
		int f1=find(a);
		int f2=find(b);
		if(f1!=f2)
		{
			v[f2]=f1;
		}
	}
	bool isCon(int a,int b)
	{
		return find(a)==find(b);
	}
};
int main()
{
	MyClass my;
	my.addnew();
	cout<<my.sizes()<<endl;                                       
    return 0;
}
欢迎在下面补充题目信息#面经##美团##测试开发工程师##校招#
全部评论
可以加个题目嘛
点赞
送花
回复 分享
发布于 2020-08-20 12:12

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务