floyd算法建立新图,dfs标记~

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
const int inf=1e9;
int d[maxn][maxn];
vector<int> g[maxn];
bool visit[maxn];
bool isend[maxn];
int N,M,K;
void floyd () {
for (int k=;k<=N;k++)
for (int i=;i<=N;i++)
for (int j=;j<=N;j++)
if (i!=j) d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
}
void dfs (int s) {
visit[s]=true;
for (int i=;i<g[s].size();i++) {
if (visit[g[s][i]]==false) {
dfs (g[s][i]);
}
}
}
int main () {
scanf ("%d %d %d",&N,&M,&K);
int u,v,distance;
for (int i=;i<=N;i++)
for (int j=;j<=N;j++)
d[i][j]=inf;
for (int i=;i<M;i++) {
scanf ("%d",&u);
isend[u]=true;
while () {
scanf ("%d %d",&distance,&v);
d[u][v]=min(d[u][v],distance);
d[v][u]=d[u][v];
u=v;
char ch=getchar ();
if (ch=='\n') break;
}
isend[u]=true;
}
floyd ();
for (int i=;i<=N;i++) {
unordered_map<int,int> pos;
for (int j=;j<=N;j++) {
if (i!=j&&d[i][j]>pos[d[i][j]/K+]&&d[i][j]!=inf)
pos[d[i][j]/K+]=d[i][j];
}
for (int j=;j<=N;j++)
if (i!=j) {
if (d[i][j]==pos[d[i][j]/K+]||(isend[j]==true&&d[i][j]!=inf))
g[i].push_back(j);
}
}
int q;
scanf ("%d",&q);
int s;
for (int i=;i<q;i++) {
scanf ("%d",&s);
fill (visit,visit+maxn,false);
dfs (s);
int flag=;
for (int j=;j<=N;j++) {
if (visit[j]==true) {
if (flag!=) printf (" ");
printf ("%d",j);
flag++;
}
}
printf ("\n");
}
return ;
}

L3-022 地铁一日游的更多相关文章

  1. PTA刷题笔记

    PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑 ...

  2. 基于ionic+angulajs的混合开发实现地铁APP

    基于ionic+angulajs的混合开发实现地铁APP 注:本博文为博主原创,转载时请注明出处. 项目源码地址:https://github.com/zhangxy1035/SubwayMap 一. ...

  3. 配置 L3 agent - 每天5分钟玩转 OpenStack(99)

    上一节我们介绍了路由服务(Routing)的基本功能,今天教大家如何配置. Neutron 的路由服务是由 l3 agent 提供的. 除此之外,l3 agent 通过 iptables 提供 fir ...

  4. Python写地铁的到站的原理简易版

    Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这 ...

  5. Neutron 理解 (6): Neutron 是怎么实现虚拟三层网络的 [How Neutron implements virtual L3 network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  6. 理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  7. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  8. 假期实践作业:从IT角度看地铁

    实习时间:2016/02/23——2016/02/26 实习地点:京港地铁14号线 实习报告: 大学四年过得真快,转眼就大三了,大学前两年半的生活可谓多姿多彩,从不懂计算机到对编程感兴趣,期待得最多的 ...

  9. 结对编程-地铁续(有种上个学期OO的既视感)

    我们组比较特殊..三人结对 github:https://github.com/qingchanghan/WPFUI_Metro po一张照片: 石浩然,韩青长.陈彦吉 (台式机真的很高端,分屏贼帅) ...

随机推荐

  1. php设计模式之面向接口开发实例代码

    <?php header("Content-type:text/html;charset=utf-8"); /** * 共同接口 */ interface db { func ...

  2. 初学Java时使用记事本开发出现的中文乱码问题

    如果是使用微软记事本,那就会麻烦一点,将后缀改为.txt,用记事本打开,左上方:文件→另存为→弹出的窗口的下方会出现使用的编码形式,将编码形式修改为ANSI编码,点击保存→确定替换即可,修改后将后缀改 ...

  3. 每天进步一点点------Allegro中SYMBOL种类

    Allegro 中SYMBOL 种类在Allegro 中, Symbol 有五种, 它们分别是Package Symbol .Mechanical Symbol.Format Symbol.Shape ...

  4. poj 3057(bfs+二分匹配)

    题目链接:http://poj.org/problem?id=3057 题目大概意思是有一块区域组成的房间,房间的边缘有门和墙壁,'X'代表墙壁,'D'代表门,房间内部的' . '代表空区域,每个空区 ...

  5. Python requests库模拟浏览器行为的一些技巧记录

    如下都是一些经验之谈,不定期更新,喜欢可以关注哦. 忽略ssl报错 一些证书问题会导致程序报错,解决方法为在发送请求的时候,带上verify=False参数即可: result = requests. ...

  6. buuctf misc 刷题记录

    1.金三胖 将gif分离出来. 2.N种方法解决 一个exe文件,果然打不开,在kali里分析一下:file KEY.exe,ascii text,先txt再说,base64 图片. 3.大白 crc ...

  7. redis哈希操作

    用户可以通过执行hset命令为哈希中的指定字段设置值: 127.0.0.1:6379> hset hash field value 根据给定的字段是否存在于散列中,hset命令的行为也会有所不同 ...

  8. C语言实例-大小写字母间的转换

    初学C语言都会遇到要求写大小写转换的题目 这类题目主要通过ASCII(美国信息交换标准代码)码差值实现,A对应ASCII码十进制数字是65,a对应ASCII码十进制数字是97,即大小写字母之间ASCI ...

  9. 【C语言】判断学生成绩等级

    方法一:if-else #include<stdio.h> int main() { printf("请输入成绩:\n"); float score; scanf_s( ...

  10. P&R --From 陌上风骑驴看IC

    FLOORPLAN: 做好floorplan要掌握哪些知识技能 遇到floorplan问题,大致的debug步骤和方法有哪些 如何衡量floorplan的QA 以上是驴神提的五大点问题.鄙人狠狠地反驳 ...