2021.08.09 P6037 Ryoku的探索(基环树)

P6037 Ryoku 的探索 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

重点:

1.树的性质

2.基环树的性质

题意:

Ryoku 所处的世界可以抽象成一个有 nn 个点, nn 条边的带权无向连通图 GG。每条边有美观度和长度。

Ryoku 会使用这样一个策略探索世界:在每个点寻找一个端点她未走过的边中美观度最高的走,如果没有边走,就沿着她前往这个点的边返回,类似于图的深度优先遍历

探索的一个方案的长度是这个方案所经过的所有边长度的和(返回时经过的长度不用计算)。

她想知道,对于每一个起点 s=1,2,⋯,n,她需要走过的长度是多少?

分析及代码:

//这是一棵美丽的基环树。
//先思考只是一棵树的情况:遍历所有边
//如果是一棵有x个点在环上的基环树呢?
//先从根结点出发,肯定要遍历子树
//接着访问环上左右两个边中最美丽的边,一路走到另一边的端点
//不从根节点出发,那就先遍历子树,走到根节点~
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std; typedef long long ll;
const int N=1e6+10;
int n,vis[N],cnt,head[N],ind,dfn[N],root[N],ans[N],fa[N];
ll sum;
struct node{
int to,next,val,beauty;
}a[N<<1]; inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
inline void add(int u,int v,int w,int x){
++cnt;
a[cnt].to=v;
a[cnt].val=w;
a[cnt].beauty=x;
a[cnt].next=head[u];
head[u]=cnt;
}
inline void find(int x){
++ind;
dfn[x]=ind;
for(int i=head[x];i;i=a[i].next){
int v=a[i].to;
if(v==fa[x])continue;
if(dfn[v]){
if(dfn[v]<dfn[x])continue;
vis[v]=1;
while(v!=x)vis[fa[v]]=1,v=fa[v];
}else{
fa[v]=x;
find(v);
}
}
}
void dfs(int x,int rt){
fa[x]=rt;
root[x]=1;
for(int i=head[x];i;i=a[i].next){
int v=a[i].to;
if(root[v]||vis[v])continue;
dfs(v,rt);
}
} int main(){
n=read();
for(int i=1;i<=n;i++){
int u,v,w,x;
u=read();v=read();w=read();x=read();
add(u,v,w,x);add(v,u,w,x);
sum+=w;
}
find(1);
for(int i=1;i<=n;i++){
if(vis[i]){
dfs(i,i);
int minn=0x3f3f3f3f;
for(int j=head[i];j;j=a[j].next){
int v=a[j].to;
if(vis[v]&&a[j].beauty<minn)ans[i]=a[j].val,minn=a[j].beauty;
}
}
}
for(int i=1;i<=n;i++)cout<<sum-1ll*ans[fa[i]]<<endl;
return 0;
}

2021.08.09 P6037 Ryoku的探索(基环树)的更多相关文章

  1. 2021.08.09 P5658 括号树(树形结构)

    2021.08.09 P5658 括号树(树形结构) [P5658 CSP-S2019] 括号树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 太长,在链接中. 分析及代码 ...

  2. 2021.08.09 P4868 Preprefix sum(树状数组)

    2021.08.09 P4868 Preprefix sum(树状数组) P4868 Preprefix sum - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 前缀和(pr ...

  3. 2021.08.09 P7238 迷失森林(树的直径)

    2021.08.09 P7238 迷失森林(树的直径) P7238 「DCOI」迷失森林 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.树的直径两种求法:两次dfs.树 ...

  4. 2021.08.09 P6225 抑或橙子(树状数组)

    2021.08.09 P6225 抑或橙子(树状数组) 重点: 1.异或用法 题意: Janez 喜欢橙子!他制造了一个橙子扫描仪,但是这个扫描仪对于扫描的每个橙子的图像只能输出一个 3232 位整数 ...

  5. 2021.08.09 P5018 对称二叉树(树形结构)

    2021.08.09 P5018 对称二叉树(树形结构) [P5018 NOIP2018 普及组] 对称二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 求一棵子树,关 ...

  6. 2021.12.09 [HEOI2016/TJOI2016]排序(线段树+二分,把一个序列转换为01串)

    2021.12.09 [HEOI2016/TJOI2016]排序(线段树+二分,把一个序列转换为01串) https://www.luogu.com.cn/problem/P2824 题意: 在 20 ...

  7. JS parseInt 中08.09 被按照0处理(转)

    <script type="text/javascript"> var aa=["01","02","03" ...

  8. 2021.12.08 P1848 [USACO12OPEN]Bookshelf G(线段树优化DP)

    2021.12.08 P1848 [USACO12OPEN]Bookshelf G(线段树优化DP) https://www.luogu.com.cn/problem/P1848 题意: 当农夫约翰闲 ...

  9. 2021.11.09 P4824 [USACO15FEB]Censoring S与P3121 [USACO15FEB]Censoring G(KMP&&AC自动机)

    2021.11.09 P4824 [USACO15FEB]Censoring S与P3121 [USACO15FEB]Censoring G(KMP&&AC自动机) https://w ...

随机推荐

  1. web服务器-nginx虚拟主机

    web服务器-nginx虚拟主机 一 虚拟主机介绍 就是把一台物理服务器划分成多个虚拟的服务器, 每一个虚拟主机都可以有独立的域名和独立的目录,同时发布俩个网站. 二. 基于IP的虚拟主机 应用场景: ...

  2. 数据库原理 之MySQL

    数据库种类: 关系型数据库: mysql 专注于数据安全 和功能 ,存取时 会有表的结构化操作解析sql语句---- 丢给磁盘存取 ----取出,结构化成表 常用关系型数据库产品介绍oracle数据库 ...

  3. 使用Cobalt Strike来钓鱼(MS Office Macro)

    Cobalt Strike操作 点击Cobalt Strike主界面中attacks->packages->ms office macro 弹出界面选择Listener,单机确定 对话框中 ...

  4. python练习册 每天一个小程序 第0006题

    1 # -*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都 ...

  5. python练习册 每天一个小程序 第0000题

    PIL库学习链接:http://blog.csdn.net/column/details/pythonpil.html?&page=1 1 #-*-coding:utf-8-*- 2 __au ...

  6. 浅谈systemd原理和应用

    多不说,直接上代码(可谓配置): [Unit] Description=demo app After=network-is-online.target [Service] Type=Simple Ex ...

  7. 通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

    Dao接口即Mapper接口.接口的全限名,就是映射文件中的namespace的值:接口的方法名,就是映射文件中Mapper的Statement的id值:接口方法内的参数,就是传递给sql的参数. M ...

  8. Mybatis mapper文件占位符设置默认值

    如果要设置占位符默认值的话:需要进行 设置 org.apache.ibatis.parsing.PropertyParser.enable-default-value 属性为true启用占位符默认值处 ...

  9. We're sorry but demo3 doesn't work properly without JavaScript enabled. Please enable it to continue.

    今天遇到一个问题为 vue请求得到的响应为 We're sorry but demo3 doesn't work properly without JavaScript enabled. Please ...

  10. Tomcat警告之“资源添加到Web应用程序[]的缓存中,因为在清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间”

    原因 缓存不够,可以将其缓存调大 解决办法: 在 /conf/context.xml 的 前添加以下内容: <Resources cachingAllowed="true" ...