ZJNU 1367 - Party--中高级
寻找从i到X,再从X到i的最短路
可以在正向图中从X开始跑一遍最短路,每个点的距离dis1[i]当作从X回到点i的距离
再将图反向从X再跑一遍,每个点的距离dis2[i]当作从i到点X的距离
最后搜索dis1[i]+dis2[i]值最大的输出
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef pair<short,int> P;
vector<P> graph1[],graph2[];
int N,M,X,dis1[],dis2[];
bool vis1[],vis2[];
queue<short> q;
int main()
{
ios::sync_with_stdio();cin.tie();
int i,j,d,cnt,len,ans=;
short a,b,id;
cin>>N>>M>>X;
for(i=;i<M;i++)
{
cin>>a>>b>>d;
graph1[a].push_back(P(b,d));
graph2[b].push_back(P(a,d));
}
memset(dis1,INF,sizeof dis1);
memset(dis2,INF,sizeof dis2);
memset(vis1,false,sizeof vis1);
memset(vis2,false,sizeof vis2);
dis1[X]=dis2[X]=;
vis1[X]=vis2[X]=true;
q.push(X);
while(!q.empty())
{
id=q.front();
q.pop();
cnt=graph1[id].size();
for(i=;i<cnt;i++)
{
len=dis1[id]+graph1[id][i].second;
if(!vis1[graph1[id][i].first]||len<dis1[graph1[id][i].first])
{
dis1[graph1[id][i].first]=len;
vis1[graph1[id][i].first]=true;
q.push(graph1[id][i].first);
}
}
}
q.push(X);
while(!q.empty())
{
id=q.front();
q.pop();
cnt=graph2[id].size();
for(i=;i<cnt;i++)
{
len=dis2[id]+graph2[id][i].second;
if(!vis2[graph2[id][i].first]||len<dis2[graph2[id][i].first])
{
dis2[graph2[id][i].first]=len;
vis2[graph2[id][i].first]=true;
q.push(graph2[id][i].first);
}
}
}
for(i=;i<=N;i++)
{
if(i==X)
continue;
ans=max(ans,dis1[i]+dis2[i]);
}
cout<<ans; return ;
}
ZJNU 1367 - Party--中高级的更多相关文章
- ZJNU 1310 - 排队——中高级
蒟蒻做法:追踪1号队员,取他回到原来位置需要的次数 /* Written By StelaYuri */ #include<stdio.h> int main(){ int T,t,n,a ...
- ZJNU 1262 - 电灯泡——中高级
在影子没有到达墙角前,人越远离电灯,影子越长,所以这一部分无需考虑 所以只需要考虑墙上影子和地上影子同时存在的情况 因为在某一状态存在着最值 所以如果以影子总长与人的位置绘制y-x图像 会呈一个类似y ...
- ZJNU 1130 - 龟兔赛跑——中高级
只需求出乌龟最短耗时跟兔子耗时比即可将起点 0 和终点 N+1 也看做充电站,进行动态规划对第i个点进行动态规划,则可以得到状态转移方程为dp[i] = max{dp[j]+time[i][j]} j ...
- ZJNU 1542 - 三角形(续)--中高级
从小到大排序后 先固定一遍,另外两边递增查找 即固定 i,j=i+1,k=j+1 然后让k递增到 a[i]+a[j]<=a[k] 时 此时不能凑成一个三角形 答案增加 k-1-j 组 此时不需要 ...
- ZJNU 1535 - 新建的大楼--中高级
因为从俯视图看,输入输出的视角是从右下方看向左上方的 所以左上角的正方体最有可能被其他正方体挡住 立体上,底部的正方体最有可能被顶部的正方体挡住 所以绘图应该从后往前,从下往上绘制 剩下的就是一大堆计 ...
- hdu 3047–Zjnu Stadium(带权并查集)
题目大意: 有n个人坐在zjnu体育馆里面,然后给出m个他们之间的距离, A B X, 代表B的座位比A多X. 然后求出这m个关系之间有多少个错误,所谓错误就是当前这个关系与之前的有冲突. 分析: 首 ...
- hdu 3074 Zjnu Stadium (带权并查集)
Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- java中高级软件工程师面试总结
最近去了几家公司面试java中高级工程师,打击挺大的,感觉自己一直以来没有很好的深入学习,对各种知识都是一知半解,但心又太高,想找更高薪的职位,结果面试屡屡碰壁,哎,心情好低落,也是时候静下心来,好好 ...
- [Jobdu] 题目1367:二叉搜索树的后序遍历序列
题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 输入: 每个测试案例包括2行: 第一行为1个整数 ...
随机推荐
- Spring开发环境搭建(Eclipse)
开发环境搭建,主要包含2部分: Java安装 Eclipse安装 为易于学习,我们只安装这2个部分,对于一般开发学习也足够了.如果你有其他要安装的,酌情添加. Java安装 我们使用Java8: 下载 ...
- flutter文本简单实现
import 'package:flutter/material.dart'; import 'package:flustars/flustars.dart'; import 'package:fl_ ...
- 详解BurpSuite软件 请求包 HTTP (9.23 第十天)
HTTP协议基础 HTTP:HyperText Transfer Protocol,超文本传输协议 1.协议特点: 简单快速,请求方式get post head等8中请求方式 无连接(一次请求就断开) ...
- P 1020 月饼
转跳点:
- Vue 获取时间戳返回自定义时间格式
直接在Vue全局函数定义: Vue.prototype.padLeftZero = function(str) { return ('00' + str).substr(str.length); }; ...
- Python 中 使用 HTMLTestRunner 模块生成测试报告
使用 HTMLTestRunner 模块可以生成测试报告,但是系统自带的报告不详细,不好看,所以找了一份详细的报告 HTMLTestRunner 模板,直接导入就能使用 两种方法生成HTML报告,都 ...
- HttpServlet中文乱码问题
客户端提交数据给服务器端(Requset) 如果数据中带有中文的话,有可能会出现乱码情况,那么可以参照以下方法解决. 如果是GET方式 1.代码转码 String username = request ...
- react-native-tab-view 导航栏切换插件讲解
首先引入插件 yarn add react-native-tab-view 如果用的原生环境要安装另外几个插件 yarn add react-native-reanimated react-nativ ...
- 使用openssl做CA服务器,并且生成证书。
[root@22 conf.d]# openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096 #ca私钥 [root@22 conf.d]# op ...
- UNION和UNION ALL的作用和语法
主要就是两句话区别: union是联合的意思,就是合并两个或多个select语句的结果集,并消除重复行: union all 当然也是联合的意思,也是合并两个或多个select语句的结果集,但是保留重 ...