牛客网 牛可乐发红包脱单ACM赛 A题 生成树

【题解】

  其实就是求两棵树不同的边有多少条。那么我们用一个set来去重即可。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<set>
 4 #include<algorithm>
 5 #define LL long long
 6 #define rg register
 7 #define N 200010
 8 using namespace std;
 9 set<pair<int,int> >s;
10 int n,m;
11 inline int read(){
12     int k=0,f=1; char c=getchar();
13     while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
14     while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
15     return k*f;
16 }
17 int main(){
18     n=read(); m=n<<1; m-=2;
19 //    printf("%d\n",n);
20     for(rg int i=1;i<=m;i++){
21         int x=read(),y=read();
22         if(x>y) swap(x,y);
23         s.insert(make_pair(x,y));
24     }
25 //    printf("%lld\n",s.size());
26     printf("%lld\n",s.size()-n+1);
27     return 0;
28 }

 

posted @ 2018-11-02 16:28  Driver_Lao  阅读(189)  评论(0编辑  收藏  举报