牛客算法周周练17A - 生成树(STL)

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

题目大意:

给出两个生成树,每一条恰好n - 1 条边,现在定义一种操作,可以删除一条边并增加一条边,问最少几次操作才能使两棵树完全相同。

解题思路:

基础STL,用map映射一下 u v,第二次输入时,如果这条边是没出现过的那就说明一定要改,ans++即可。

Code:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <map>
#include <set>
#include <cstring>
#include <queue>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
map<pii, int> mp;
int main()
{
    int n;
    cin >> n;
    for (int i = 1; i < n; i ++)
    {
        int x, y;
        cin >> x >> y;
        if (x < y)
          swap(x, y);
        mp[make_pair(x, y)]++;
    }
    int ans = 0;
    for (int i = 1; i < n; i ++)
    {
        int x, y;
        cin >> x >> y;
        if (x < y)
          swap(x, y);
        if (!mp[make_pair(x, y)])  ans ++;
    }
    cout << ans << endl;
    return 0;
}
posted @ 2020-07-29 14:40  Hayasaka  阅读(65)  评论(0编辑  收藏  举报