无名选手


私信TA

用户名:qwer123456

访问量:10194

签 名:

qwer123456

等  级
排  名 844
经  验 3513
参赛次数 10
文章发表 25
年  龄 0
在职情况 学生
学  校 某知名大专
专  业

  自我简介:

解题思路:就是一个图边的搜素,只需要搜到最长的,再从最长搜到最短就可以

注意事项:这个题不能来数组来解吧,反正我把所有数组都开了一遍;最后用了vector

参考代码:

#include<iostream>
#include<vector>
#include<cstring> 
#define N 1000000
using namespace std;
vector<int>a[N];
vector<int>b[N];
bool p[N];
int l,ans=0,n;
void dfs(int x,int sum)
{
 if(sum>ans)
 {
  ans=sum;
  l=x;
  }
 p[x]=true;
 for(int i=0;i<a[x].size();i++)
 {
  if(p[a[x][i]]) continue;
  sum+=b[x][i];
 
  dfs(a[x][i],sum);
  sum-=b[x][i];
 }
 p[x]=false;
}
int main()
{
  cin>>n;
  for(int i=1;i<n;i++)
  {
   int tx,ty,ts;
   cin>>tx>>ty>>ts;
   a[tx].push_back(ty);
   b[tx].push_back(ts);
   
   a[ty].push_back(tx);
   b[ty].push_back(ts);
  }
  dfs(1,0);
  memset(p,false,sizeof(p));
  dfs(l,0);
  int s=0;
  for(int i=1;i<=ans;i++)
      s+=i+10;
      cout<<s;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区