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