链接:http://www.lightoj.com/volume_showproblem.php?problem=1094

题意:

一共n各节点编号0-n-1, 输入n-1条无向边代表u-v距离为w,求最远的两个点的距离(即树的直径)。

思路:

如果用最短路径来求,n<=30000是会超时的,正确做法是先随便从一个点开始深搜,搜到最远的节点一定是直径其中一个节点,然后从这个点再来次深搜。

 #include <bits/stdc++.h>
using namespace std;
const int N = ;
vector<pair<int, int> >V[N];
bool vis[N];
int Index, ans;
void dfs(int s, int sum)
{
vis[s] = ;
if(ans < sum)
{
ans = sum;
Index = s;
}
for(unsigned int i = ; i < V[s].size(); i++)
{
int v = V[s][i].first, w = V[s][i].second;
if(vis[v]) continue;
dfs(v, sum+w);
}
}
int main()
{
int n, t, cas = ;
cin>>t;
while(t--)
{
scanf("%d", &n);
int a, b, c;
for(int i = ; i <= n; i++) V[i].clear();
for(int i = ; i < n-; i++)
{
scanf("%d%d%d", &a, &b, &c);
V[a].push_back(make_pair(b, c));
V[b].push_back(make_pair(a, c));
}
ans = ;
memset(vis, , sizeof vis);
dfs(, );
ans = ;
memset(vis, , sizeof vis);
dfs(Index, );
printf("Case %d: %d\n", ++cas, ans);
}
return ;
}

最新文章

  1. ie浏览器 jsp中链接参数为中文的处理
  2. updatepanel用法之triggers(局部刷新,全部刷新)使用示例
  3. 在Java中直接调用js代码(转载)
  4. WPF控件模板
  5. 动态规划+滚动数组 -- POJ 1159 Palindrome
  6. [转] 传说中的WCF(2):服务协定的那些事儿
  7. 【MUI】百度地图定位功能
  8. Codeforces.871D.Paths(莫比乌斯反演 根号分治)
  9. iOS has conflicting provisioning settings 解法
  10. 【转】AJAX请求和普通HTTP请求区别
  11. Importing Maven projects&#39; has encountered a problem
  12. 虚拟机下Linux操作Ubuntu
  13. 即时通信系统中实现全局系统通知,并与Web后台集成【附C#开源即时通讯系统(支持广域网)——QQ高仿版IM最新源码】
  14. crontab使用环境变量
  15. Java学习--基本数据类型的定义和运算
  16. 如何使用windows的计划任务?计划任务?
  17. nodejs学习:net模块
  18. 手把手教做Excel直方图
  19. inline,block,inline-block解析
  20. Java学习第二十二天

热门文章

  1. Django组件 - cookie、session、用户认证组件
  2. JAVA三框架工作原理是什么?
  3. java反射基础知识(四)反射应用实践
  4. blogCMS整理
  5. Python(调用函数、定义函数)
  6. LeetCode:验证二叉搜索树【98】
  7. $ git学习总结系列(3)——分支管理
  8. SVN更新的时候报断言失败解决办法
  9. JavaScript与Java数据类型的区别
  10. jar包错误