CJOJ 免费航班

Description

小Z在MOI比赛中获得了大奖,奖品是一张特殊的机 票。使用这张机票,可以在任意一个国家内的任意城市之间的免费飞行,只有跨国飞行时才会有额外的费用。小Z获得了一张地图,地图上有城市之间的飞机航班和 费用。已知从每个城市出发能到达所有城市,两个城市之间可能有不止一个航班。一个国家内的每两个城市之间一定有不止一条飞行路线,而两个国家的城市之间只 有一条飞行路线。小Z想知道,从每个城市出发到额外费用最大的城市,以便估算出出行的费用,请你帮助他。当然,你不能通过乘坐多次一个航班增加额外费用, 也就是必须沿费用最少的路线飞行。

Input

第一行,两个整数N,M,表示地图上有N个城市,M条航线。
接下来M行,每行三个整数a,b,c,表示城市a,b之间有一条费用为c的航线。

Output

共N行,第i行为从城市i出发到达每个城市额外费用的最大值。

Sample Input

6 6
1 4 2
1 2 6
2 5 3
2 3 7
6 3 4
3 1 8

Sample Output

4
4
4
6
7
7

Hint

样例说明
有四个国家,包含的城市分别为 {1,2,3},{4},{5},{6}。从城市1出发到达城市6,乘坐(1,3)(3,6)两个航班费用最大,(1,3)在国内为免费航班,(3,6)的费用为4,所以从1出发的最大费用为4。

数据规模
对于30%的数据 1<=N<=1000,1<=M<=1000
对于100%的数据 1<=N<=20000,1<=M<=200000

Source

动态规划 ,连通性

 

根据题目描述,每个国家是一个边双连通分量,把每个边双连通分量缩点后,原图变为一棵树.

相当于是求树上每个点在树上的最长路.

所有点的树上最长路可以通过两边dfs进行DP;

第一遍:求出每个点只到他子树内部的最长路和次长路

第二遍:每个点再由他父亲来更新往改点的子树外走的最长路,因为该点到子树外面的路必经过他爸爸

具体实现就是最长路和次长路转化,转移画画图就好了

边双连通缩点的话就是把桥标记后在dfs一遍

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<vector>
#define RG register
using namespace std;
typedef long long ll;
const int N=20050;
int gi(){int x=0;char ch=getchar();while(ch<'0'||ch>'9') ch=getchar();while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x;
}
int head[N],nxt[N*20],to[N*20],dfn[N],low[N],vis[N],zhan[N],w[N*20],cnt=1,tot,sum,top,pd[N*20];
vector<int>q[N],p[N],W[N];
int dis[N][2],vis2[N],fr[N];
void tarjan(int x,int fa){dfn[x]=low[x]=++sum;for(RG int i=head[x];i;i=nxt[i]){int y=to[i];if(!dfn[y]){tarjan(y,x);low[x]=min(low[x],low[y]);if(low[y]>dfn[x]) pd[i]=pd[i^1]=1;}else if(y!=fa) low[x]=min(low[x],dfn[y]);}
}
void dfs3(int x,int gg){fr[x]=gg,vis[x]=1;q[gg].push_back(x);for(RG int i=head[x];i;i=nxt[i]){if(!pd[i]&&!vis[to[i]]) dfs3(to[i],tot);}
}
void dfs1(int x){vis2[x]=1;for(RG int i=0;i<p[x].size();i++){int y=p[x][i],w=W[x][i];if(!vis2[y]){dfs1(y);if(dis[y][1]+w>=dis[x][1]){dis[x][0]=dis[x][1];dis[x][1]=dis[y][1]+w;}else dis[x][0]=max(dis[x][0],dis[y][1]+w);}}
}
void dfs2(int x){vis2[x]=1;for(RG int i=0;i<p[x].size();i++){int y=p[x][i],w=W[x][i];if(!vis2[y]){if(dis[y][1]+w==dis[x][1]){dis[y][0]=max(dis[y][0],min(dis[x][1]-w,dis[x][0]+w));dis[y][1]=max(dis[x][1]-w,dis[x][0]+w);}else{dis[y][0]=max(dis[y][0],max(dis[x][0]+w,min(dis[y][1],dis[x][1]+w)));dis[y][1]=max(dis[y][1],dis[x][1]+w);}dfs2(y);}}
}
int main(){int n,m,x,w1,y;cnt=1;n=gi(),m=gi();for(RG int i=1;i<=m;i++){x=gi(),y=gi(),w1=gi();to[++cnt]=y,w[cnt]=w1,nxt[cnt]=head[x],head[x]=cnt;to[++cnt]=x,w[cnt]=w1,nxt[cnt]=head[y],head[y]=cnt;}tarjan(1,1);for(int i=1;i<=n;i++) if(!vis[i]) dfs3(i,++tot);for(RG int i=1;i<=tot;i++)for(RG int j=0;j<q[i].size();j++)for(RG int k=head[q[i][j]];k;k=nxt[k]){int y=fr[to[k]],w1=w[k];if(y!=i){p[i].push_back(y);W[i].push_back(w1);}}dfs1(1);for(RG int i=1;i<=tot;i++) vis2[i]=0;dfs2(1);for(RG int i=1;i<=n;i++) printf("%d\n",dis[fr[i]][1]);return 0;
}

 

转载于:https://www.cnblogs.com/qt666/p/6880132.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java perl5compiler,Java中正则表达式使用方法详解(四)

3.2 HTML处理实例一下面一个任务是分析HTML页面内FONT标记的所有属性。HTML页面内典型的FONT标记如下所示程序将按照如下形式&#xff0c;输出每一个FONT标记的属性在这种情况下&#xff0c;我建议你使用两个正则表达式。第一个如图十一所示&#xff0c;它从字体标记提取出“&q…

java 缓存接口,java项目中,针对缓存问题的处理方式【接口中的处理方式】

1、在service包中&#xff0c;分别建立了关于缓存的一系列的接口、类等&#xff0c;封装到一个工具包中&#xff1b;临时缓存的接口(代码部分)&#xff1a;packagecom.tools;importjava.util.Date;public interfaceCacheTemplet {//设置添加永久缓存,(缓存唯一索引&#xff0c;…

【hh】我胡汉三又回来了

hh 差不多半年没来机房了&#xff0c;高一的都已经碾压我100题了 开始得比较晚&#xff0c;估计比高一的早两三个月吧&#xff0c;停了这半年落下了不少。 但是没有关系啊&#xff0c;学OI纯粹是好玩嘛&#xff0c;一开始报名的时候根本不知道有联赛这回事&#xff08;其实报名…

python爬取知乎标题_python爬虫 爬取知乎文章标题及评论

目的&#xff1a;学习笔记2.首先我们试着爬取下来一篇文章的评论&#xff0c;通过搜索发现在 response里面我们并没有匹配到评论&#xff0c;说明评论是动态加载的。3.此时我们清空请求&#xff0c;收起评论&#xff0c;再次打开评论 4.完成上面操作后&#xff0c;我们选择XHR&…

php curl 要安装pear,MacOS 安装pear

1、下载Pearcurl -O https://pear.php.net/go-pear.phar2、安装Pearsudo php -d detect_unicode0 go-pear.phar安装过程需要进行简单的配置&#xff0c;如下Below is a suggested file layout for your new PEAR installation. Tochange individual locations, type the number…

CentOS7 下调教mysql记实 之一

迁移数据库时遇到错误&#xff1a; Error Code: 1418. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 解释&…

java 映射数组_Java中的数组,列表,集合,映射,元组,记录文字

java 映射数组有时&#xff0c;当我对JavaScript的强大功能和表现力感到兴奋时&#xff0c;我发现自己错过了Java世界中的一两个功能。 除了lambda表达式/闭包或任何您想称为“匿名函数”的东西之外&#xff0c;它还对数组&#xff0c;数组&#xff0c;列表&#xff0c;集合&am…

知道接口地址 如何传数据_如何选显示器连接线?四种主流接口要知道

前两天家里电脑显示器的线坏了&#xff0c;火急火燎的买了根线&#xff0c;谁知道买回来之后接口不匹配&#xff0c;不能用。显示器为什么要有这么多接口呢&#xff1f;这些接口又有什么区别呢&#xff1f;必须把它搞清楚&#xff01;这不&#xff0c;经过我的不屑努力&#xf…

docker rabbitmq php扩展,Docker开启RabbitMQ延时消息队列

前言经常在开发中会遇到一些不需要同步执行的业务&#xff0c;那我们就需要用到消息队列来进行异步执行&#xff0c;但是对于某些业务就还需要用到延时的功能&#xff0c;比如订单支付超时关闭&#xff0c;那么这个时候我们就需要开启消息队列的延时功能&#xff0c;当然也有朋…

[转]Eclipse插件开发之基础篇(3) 插件的测试与调试

原文地址&#xff1a;http://www.cnblogs.com/liuzhuo/archive/2010/08/17/eclipse_plugin_1_1_2.html 1. 使用JUnit对插件进行测试 Eclipse中已经嵌入了JUnit&#xff0c;我们可以使用JUnit为插件进行单体测试。一般的JUnit是不可以对插件部分(对Eclipse的API依赖的部分)进行测…

您应该考虑将应用程序升级到Spring 4的5个理由

Spring Framework于2004年首次发布&#xff0c;是顶级Java框架之一。 Spring 4已于2013年12月发布&#xff0c;它是支持Java 8的第一个框架版本。了解为什么应该考虑将应用程序升级到Spring 4。 注意&#xff1a;我最初将此博客文章写在公司博客http://blog.goyello.com上 。 …

大整数乘法c语言代码_大整数乘法

大整数乘法和我们小学学过的乘法公式一样&#xff08;如下图&#xff09;&#xff0c;就是按位相乘&#xff0c;两个数中的每一位彼此相乘&#xff0c;然后将相同列的结果加起来&#xff0c;最后统一处理进位即可。#include <iostream> #include <cstring> using n…

13.5.SolrCloud集群使用手册之数据导入

转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.使用curl命令方式 SolrCloud时会根据路由规则路由到各个shard。 删除所有数据 curl http://192.168.137.171:8080/solr-cloud/myc_shard1_replica1/update?committrue -H "Content-Type: text/xml" --data-b…

dematel matlab,决策与实验室方法,DEMATEL分析方法介绍

DEMATEL实施步骤第一步&#xff1a;从研究目的出发&#xff0c;确定研究指标或元素。量化各元素之间的相互关系。得到直接影响矩阵。第二步&#xff1a;通过归一化原始关系矩阵。得到规范直接影响矩阵。第三步&#xff1a;由规范化直接影响矩阵。计算得到综合影响矩阵。。第四步…

python如何打印字符串_如何在Python中打印“漂亮”字符串输出

Standard Python string formatting就足够了。 # assume that your data rows are tuples template "{0:8}|{1:10}|{2:15}|{3:7}|{4:10}" # column widths: 8, 10, 15, 7, 10 print template.format("CLASSID", "DEPT", "COURSE NUMBER&qu…

mysql5.7环境,MySQL-5.7-线上生产环境部署

环境信息&#xff1a;Centos-7.2.1511MySQL 5.7.22业务名称core本篇文章数据库安装用于线上生成所使用&#xff0c;所安装的数据库使用为Percona版本&#xff0c;同样本站高可用部署都是基于本篇文章基础进行的。部署搭建&#xff1a;安装相关依赖并下载MySQL移动到指定目录yum…

primefaces_懒惰的JSF Primefaces数据表分页–第2部分

primefaces页面代码非常简单&#xff0c;没有复杂性。 检查“ index.xhtml”代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"…

龙芯2h芯片不能进入pmon_“龙芯”18年:这个团队,终结了中国计算机产业的“无芯”历史...

近期在第二届数字中国建设峰会上展出的国产芯片龙芯3号。芯片是信息产业的灵魂&#xff0c;通用CPU(中央处理器)可以说是芯片中的“珠峰”。自主研发CPU&#xff0c;难度很大。在这个故事的起点&#xff0c;2001年8月的一个清晨&#xff0c;当龙芯第一代产品龙芯1号成功启动操作…

帝国cms录入表单模板php,帝国cms7.5在线表单提交制作教程

最近春哥仿站团队接到很多仿站客户订单&#xff0c;这里面有一个这样的功能&#xff0c;表单提交。今天花时间写个教程给大家。另外我们春哥仿站团队推出低价仿站业务&#xff0c;市面上99%的企业站点都能制作出来&#xff0c;有需要的联系我们。今天春哥团队华哥给大家讲解一下…

golang linux安装

go在linux下的安装&#xff1a; [rootlocalhost src]# wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz 速度还挺快的 [rootlocalhost src]# tar -C /usr/local -xzf go1.8.1.linux-amd64.tar.gz 设置环境变量 [rootlocalhost src]# export PATH$PATH:…