1389

算个简单的树形DP吧 不知道是不是数据太水 竟然一A了

就是对于当前节点有没有被选中就行选最优 有没有被选中的意思是有没有与它相连的边被选中

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
using namespace std;
#define N 100010
vector<int>d[N];
int dp[N][],g;
struct node
{
int u,v;
}p[N];
int dfs(int u,int v,int f)
{
if(dp[v][f]!=-)
return dp[v][f];
int i;
int s[][] = {};
int flag =,x=-;
for(i = ; i < d[v].size() ; i++)
{
int tv = d[v][i];
if(tv==u) continue;
flag = ;
int s1 = dfs(v,tv,);
if(f)
{
s[(i+)%][] = s[i%][]+s1;
}
else
{
int s2 = dfs(v,tv,)+;
s[(i+)%][] = s[i%][]+s1;
if(s[i%][]+s1<s[i%][]+s2)
{
s[(i+)%][] = s[i%][]+s2;
x = tv;
}
else
s[(i+)%][] = s[i%][]+s1;
}
}
if(!flag)
{
return dp[v][f] = ;
}
if(x!=-)
{
g++;
p[g].u = v;
p[g].v = x;
}
int maxz = ;
for(i = ; i < ; i++)
maxz = max(maxz,max(s[][i],s[][i]));
return dp[v][f] = maxz;
}
int main()
{
int i,n,m;
while(cin>>n>>m)
{
memset(dp,-,sizeof(dp));
for(i = ; i <= n ;i++)
d[i].clear();
for(i = ; i <= m ;i++)
{
int u,v;
cin>>u>>v;
d[u].push_back(v);
d[v].push_back(u);
}
dfs(-,,);
cout<<dp[][]<<endl;
for(i = ; i <= g ; i++)
cout<<p[i].u<<" "<<p[i].v<<endl;
}
return ;
}

最新文章

  1. MySql: 常见错误
  2. JS运动基础(三) 弹性运动
  3. 通用窗口类 Inventory Pro 2.1.2 Demo1(下)
  4. spring mvc如何获取问号后的url参数
  5. JS模板引擎 :ArtTemplate (1)
  6. LNK1169 和 LNK2005
  7. 类加载器classCloader
  8. feof()和EOF的用法(转载)
  9. Linux命令 文件的建立移动删除
  10. sql in 和 exist的区别
  11. Swagger入门教程
  12. Win10电脑经常自动掉线、自动断网的解决方法
  13. MySQL存储过程--(1)
  14. [Swift]LeetCode247.对称数 II $ Strobogrammatic Number II
  15. 看到一个简单的背单词java程序的设计,收藏下
  16. Linux cp命令详解
  17. LINUX 手动建立SWAP文件及删除
  18. 解决jdk1.7,1.8共存问题小思
  19. Spring Boot 中使用 @ConfigurationProperties 注解
  20. leetcode 树类型题

热门文章

  1. Node 即学即用 笔记 思维导图
  2. python 【第三篇】函数基础
  3. 嵌入式开发之davinci--- 8168 电源调试总结
  4. 2016/05/17 thinkphp3.2.2 ① Ajax 使用 ②前端验证
  5. accept()函数用来告诉Qt,事件处理函数“接收”了这个事件,不要再传递;ignore()函数则告诉Qt,事件处理函数“忽略”了这个事件,需要继续传递(看一下QWidget::mousePressEvent的实现,最为典型。如果希望忽略事件,只要调用父类的响应函数即可)
  6. mondb08---导入导出
  7. Ubuntu Bochs boot.asm 测试
  8. BZOJ_1511_[POI2006]OKR-Periods of Words_KMP
  9. Oracle VM VirtualBox启动新建虚拟机弹错--不能为虚拟机xxxx电脑 打开一个新任务
  10. Rails 浅谈 ActiveRecord 的 N + 1 查询问题(copy)