Codeforces
来源:互联网 发布:c 语言入门级书籍 编辑:程序博客网 时间:2024/06/05 05:05
题目给出一棵树,求在使这个图依然是二分图的前提下,最多能添加多少条边。
题解:
树必然是二分图,一定有n-1条边,我们先dfs对其二分染色,把点分为两个集合,两集合大小的积|s1|*|s2|就是最多能有的边数,减去原边数就是答案了。
AC代码:
#include <stdio.h>#include <string.h>#include <string>#include <iostream>#include <stack>#include <queue>#include <vector>#include <algorithm>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;vector <int> v[100009];int color[100009];int vis[100009],n;void dfs(int x,int c){ color[x]=c; vis[x]=1; for(int i=0;i<v[x].size();i++) { if(!vis[v[x][i]]) { dfs(v[x][i],!c); } } return ;}int main(){ cin>>n; for(int i=1;i<=n-1;i++) { int t1,t2; cin>>t1>>t2; v[t1].push_back(t2); v[t2].push_back(t1); } dfs(1,1); //for(int i=1;i<=n;i++)cout<<color[i]<<endl; long long int cnt=0,ans=0; for(int i=1;i<=n;i++)if(color[i]==1) { cnt++; } ans=cnt*(n-cnt)-(n-1); cout<<ans<<endl;}
阅读全文
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Android Studio 上传SVN标准全过程(二)
- ERROR D8016: “/ZI”和“/Gy-”命令行选项不兼容
- HttpClient使用详解
- 文章标题
- Hadoop生态圈各组件的启动及关闭脚本
- Codeforces
- 网络协议之DHCP协议(一)------DHCP协议基础
- oracle function用法
- 第四周项目三单链表的应用3
- Hadoop的环境搭建
- python 装饰器
- UITableView设置Section间距
- Java 8 Tutorials 代码实例指南
- Demo019_判断是否为闰年