博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gym - 100004A 树的性质
阅读量:5815 次
发布时间:2019-06-18

本文共 1329 字,大约阅读时间需要 4 分钟。

题目:

题意:

从节点 0 出发,把每一个节点都经过一遍,然后从一个节点回到学校。

由于有 n+1个节点,n条边,而且保证两两互相到达,那么这就是一个棵树。

于是,可以发现,如果从一个点出发,然后回到原来的点,路程是所有边的2倍,这样,就可以枚举从哪个点回学校就行了。

然后一个坑点就是,那个最后枚举的时候ans初始化要注意很大,因为每条边的权值都是10的9次方大小。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 7 using namespace std; 8 9 const int maxn = 100005; 10 11 int times[maxn]; 12 13 struct Edge { 14 int from,to; 15 long long dist; 16 }; 17 18 19 struct Hope { 20 int u; 21 long long d; 22 bool operator < (const Hope& rhs) const { 23 return d > rhs.d; 24 } 25 }; 26 27 28 29 struct Dij { 30 int n,m; 31 vector
G[maxn]; 32 vector
edges; 33 bool vis[maxn]; 34 long long d[maxn]; 35 36 void init(int n) { 37 for(int i=0;i
Q; 55 Q.push((Hope){s,0}); 56 while(!Q.empty()) { 57 Hope x = Q.top();Q.pop(); 58 if(vis[x.u]) 59 continue; 60 vis[x.u] = true; 61 for(int i=0;i
d[x.u]+e.dist) { 64 d[e.to] = d[x.u] + e.dist; 65 Q.push((Hope){e.to,d[e.to]}); 66 } 67 } 68 } 69 } 70 71 }; 72 73 Dij sol; 74 75 int main(int argc, char** argv) { 76 int n; 77 scanf("%d",&n); 78 sol.init(n+1); 79 for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/TreeDream/p/6611939.html

你可能感兴趣的文章
iOS sqlite3(数据库)
查看>>
粤出"飞龙",打造新制造广东样本
查看>>
编玩边学获数千万元A轮融资,投资方为君联资本
查看>>
蓝图(Blueprint)详解
查看>>
Spark之SQL解析(源码阅读十)
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)...
查看>>
海贼王十大悲催人物
查看>>
BigDecimal 舍入模式(Rounding mode)介绍
查看>>
开源 免费 java CMS - FreeCMS1.2-标签 infoSign
查看>>
开源 免费 java CMS - FreeCMS1.9 移动APP生成栏目列表数据
查看>>
git reset 三种用法总结
查看>>
虚拟机新增加硬盘,不用重启读到新加的硬盘
查看>>
Java IO流详尽解析
查看>>
邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)...
查看>>
Linux VSFTP服务器
查看>>
DHCP中继数据包互联网周游记
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>