题解 A 生成树

生成树

https://ac.nowcoder.com/acm/contest/6607/A

由于要求边完全相同,所以在 A 中存在的边但 B 中不存在的一定会被删掉,其它边保留,连边就连 B 中剩下没连的。

所以,只用统计 A 中出现过的但 B 中没有出现过的边,对于一条边 ,如果 交换 ,然后查询数对是否出现过即可。

用一个 map 维护。

#include<bits/stdc++.h>
#define re
using namespace std;
#define int long long
inline int read(){
    re int t=0;re char v=getchar();
    while(v<'0')v=getchar();
    while(v>='0')t=(t<<3)+(t<<1)+v-48,v=getchar();
    return t;
}
map<int,int>v;
int n,ans;
signed main(){
    n=read();
    for(re int i=1,x,y;i<n;++i){
        x=read(),y=read();
        if(x>y)x^=y^=x^=y;
        v[x*n+y]=1;
    }
    for(re int i=1,x,y;i<n;++i){
        x=read(),y=read();
        if(x>y)x^=y^=x^=y;
        if(!v[x*n+y])++ans;
    }
    printf("%lld",ans);
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
10-12 10:48
已编辑
秋招之苟:邻居家老哥19届双2硕大厂开发offer拿遍了,前几天向他请教秋招,他给我看他当年的简历,0实习实验室项目技术栈跟开发基本不沾边😂,我跟他说这个放在现在中厂简历都过不了
点赞 评论 收藏
分享
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务