牛客网 牛可乐发红包脱单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 }