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个整数 ...
随机推荐
- 1. react 简书 项目初始化
1. 创建 react 项目 npx create-react-app my-app 2. src 目录下删除 除了 index.js index.css app.js 的文件 3. 引入 style ...
- python函数-函数进阶
python函数-函数进阶 一.命名空间和作用域 1.命名空间 内置命名空间 —— python解释器 就是python解释器一启动就可以使用的名字存储在内置命名空间中 内置的名字在启动解释器的时候被 ...
- 常用sql语句(mysql测试)
DB数据库,DatabaseDBMS数据库管理系统,DatabaMemanagmentSystemSQL结构化查询语言,structure Query Language 开启服务net start m ...
- 7.CSRF攻击和文件上传漏洞攻击
一.CSRF攻击及防范措施 1.概念 请求来源于其他网站,请求并不是用户的意愿,而是伪造的请求,诱导用户发起的请求 2.场景 攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以 ...
- openstack trove weekly meeting时间即将更改
为了平衡英国.巴黎.德国.美国和中国开发者的作息习惯,openstack trove项目组在5月18日的weekly meeting上开始讨论新的开会时间. 当前的开会时间是,周三 UTC 18:00 ...
- Navicat for Mysql 11.2 的下载,安装与激活
1. Navicat for Mysql 11.2 的下载 链接:https://pan.baidu.com/s/1w54F-MYTLuy4TQwpzUE7bQ 密码:zsfu 2.下载的 ...
- 设计模式讲解3:ChainOfResponsibility模式源码
声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 责任链模式,和普通的函数逐层调用栈形成的逻辑链条不通,责任链会落实到某一个具体实施者完成该责任,而普通函数 ...
- plt画log图
import matplotlib.pyplot as plt import math import numpy as np x = np.arange(-0.85,0.95,0.05) #获得函数结 ...
- SQL基础教程(第2版)第2章 查询基础:练习题
SELECT product_name, regist_date FROM Product WHERE regist_date > '2009-04-28'; ① ~ ③中的 SQL 语句都无法 ...
- SQL基础教程(第2版)第2章 查询基础:2-1 SELECT语句基础
● 通过指定DISTINCT可以删除重复的行.● 为列设定显示用的别名. ■列的查询 通过 SELECT 语句查询并选取出必要数据的过程称为查询(query). 该 SELECT 语句包含了 SELE ...