链接:https://ac.nowcoder.com/acm/contest/369/C

题目描述

小A给你了一棵树,对于这棵树上的每一条边,你都可以将它复制任意(可以为0)次(即在这条边连接的两个点之间再加一条边权相同的边),求所有可能新形成的图中欧拉路的最短长度
欧拉路:从图中任意一个点开始到图中任意一个点结束的路径,并且图中每条边只通过恰好一次

输入描述:

第一行一个数 n ,表示节点个数
接下来 n-1 行,每行三个整数 u,v,w,表示有一条 u 到 v 边权为 w 的无向边
保证数据是一棵树

输出描述:

一行一个整数,表示答案

输入

4
1 2 1
1 3 1
1 4 2

输出

5

题意:找一条最短路,可以遍历所有树的节点
题意:这是博主第二次写这种题了,只要找到树的直径,然后用 总权值*2-直径的权值 就是答案
本来以为可以直接a掉 结果脑残的用了刚刚学会的链式前向星,没有注意双向边数组两倍的细节 超时到自闭
#include <cstdio>
#include <map>
#include <iostream>
#include<cstring>
#include<bits/stdc++.h>
#define ll long long int
#define M 6
using namespace std;
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
int moth[]={,,,,,,,,,,,,};
int dir[][]={, ,, ,-, ,,-};
int dirs[][]={, ,, ,-, ,,-, -,- ,-, ,,- ,,};
const int inf=0x3f3f3f3f;
const ll mod=1e9+;
int n,cnt;
struct node{
int next;
int to;
int w;
};
node edge[];
int head[];
bool vis[];
void add(int u,int v,int w){
edge[++cnt].next=head[u];
edge[cnt].to=v;
edge[cnt].w=w;
head[u]=cnt;
}
ll ans;
int ss;
void dfs(int pos,ll v){
vis[pos]=;
for(int i=head[pos];i!=;i=edge[i].next){
if(vis[edge[i].to]) continue;
dfs(edge[i].to,v+edge[i].w);
vis[edge[i].to]=;
}
if(v>ans){
ans=v;
ss=pos;
}
}
int main(){
while(~scanf("%d",&n)){
ll sum=;
memset(head,,sizeof(head));
memset(vis,,sizeof(vis));
cnt=;
for(int i=;i<n;i++){
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
sum+=w;
add(u,v,w);
add(v,u,w);
}
ans=;
dfs(,);
vis[]=;
ans=;
dfs(ss,);
printf("%lld\n",sum*-ans);
}
}

最新文章

  1. wpa supplicant 保存 wifi 设置
  2. golang 文件读取
  3. web服务器长连接
  4. Cocos2d-x内存管理研究&lt;二&gt;
  5. UpdatePanel中执行js
  6. Container.ItemIndex 获取到行的序号
  7. uva 12626 - I ❤ Pizza
  8. 【Lucene4.8教程之一】使用Lucene4.8进行索引及搜索的基本操作
  9. JS,JQuery各种获取屏幕的宽度和高度
  10. linux下配置Tomcat开机启动
  11. TSVN客户端复制文件
  12. sql server2008数据库迁移的两种方案
  13. UE导航系统详
  14. Mysql的变量一览
  15. Vue.directive基础,在Vue模块开发中使用
  16. Linux下wc命令统计文件行数/词数/字符数/最长行字符数
  17. Mysql Server系统架构介绍
  18. TweenMax.allTo
  19. MVC-READ4
  20. nsq里面WaitGroups两种实用的用法

热门文章

  1. Linux常用基础命令整理:关机命令、查看目录下文件命令等
  2. P4770 [NOI2018]你的名字
  3. 【工作感悟】Android 开发者,如何提升自己的职场竞争力?
  4. [转载]sql 盲注之正则表达式攻击
  5. Ceph分布式存储-运维操作笔记
  6. STL next_permutation()
  7. 软件项目第一次sprint评论
  8. python语言几个常见函数的使用
  9. iOS开发线程安全问题
  10. [2017BUAA软工]第0次博客作业