VIJOS-P1635 城市连接
嘿嘿嘿,逆向spfa,貌似不难...
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std;
#define N 1005
int n;
int map[N][N];
struct node
{
int next,to,val;
int next1,from;
}e[N*N];
int head[N],tail[N],cnt,vis[N],dis[N],a[N];
void add(int x,int y,int z)
{
e[++cnt].next=head[x];
e[cnt].to=y;
e[cnt].val=z;
head[x]=cnt;
e[cnt].next1=tail[y];
e[cnt].from=x;
tail[y]=cnt;
return ;
}
int dijkstra(int start)
{
memset(dis,0x3f,sizeof(dis));
memset(vis,,sizeof(vis));
dis[start]=;
for(int i=;i<=n;i++)
{
int x;
int min_value=0x3f3f3f;
for(int j=;j<=n;j++)
{
if(vis[j]!=&&dis[j]<min_value)
{
min_value=dis[j];
x=j;
}
}
vis[x]=;
for(int k=head[x];k!=-;k=e[k].next)
{
int ans=e[k].to;
if(vis[ans]!=)
{
if(dis[ans]>dis[x]+e[k].val)
{
dis[ans]=dis[x]+e[k].val;
}
}
}
}
return dis[n];
}
void spfa(int start)
{
memset(vis,,sizeof(vis));
queue <int>q;
q.push(start);
vis[start]=;
int num=;
a[num]=n;
while(!q.empty())
{
int x=q.front();
q.pop();
vis[x]=;
for(int i=tail[x];i!=-;i=e[i].next1)
{
if(dis[e[i].from]==dis[x]-e[i].val)
{
a[++num]=e[i].from;
q.push(e[i].from);
}
}
}
return ;
}
int main()
{
scanf("%d",&n);
memset(head,-,sizeof(head));
memset(tail,-,sizeof(tail));
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
scanf("%d",&map[i][j]);
if(map[i][j]!=)
{
add(i,j,map[i][j]);
}
}
}
int ans=dijkstra();
spfa(n);
int i;
for(i=;;i++)
{
if(a[i+]==)break;
}
for(;i>=;i--)
{
printf("%d ",a[i]);
}
puts("");
printf("%d\n",ans);
}
VIJOS-P1635 城市连接的更多相关文章
- 使用sslsplit嗅探tls/ssl连接
首先发一个从youtube弄到的sslsplit的使用教程 http://v.qq.com/page/x/k/s/x019634j4ks.html 我最近演示了如何使用mitmproxty执行中间人攻 ...
- 【经典DP】洛谷 P2782 友好城市
嘤嘤嘤,昨天两个文化课老师在上奥赛时招呼我(亲切交流),今天又要写工作报告,没时间写题解,希望今天能补上 友好城市 题目://洛谷那粘来的题面竟然能把格式粘过来 题目描述 有一条横贯东西的大河,河有笔 ...
- BZOJ4596: [Shoi2016]黑暗前的幻想乡
Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖 怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类) 博丽灵梦和八云紫等人整日高谈所有妖怪 ...
- 【BZOJ-3195】奇怪的道路 状压DP (好题!)
3195: [Jxoi2012]奇怪的道路 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 305 Solved: 184[Submit][Statu ...
- TC250专场
SRM 623 DIV2 1000pt 题意:给出一个最多50*50的矩阵,每个单元可能为'.'.'P'.'A','.'代表空地,你每次操作可以把一个P或者A拿到空地上,求一个最大的含有相同字符的矩形 ...
- {part1}DFN+LOW(tarjan)割点
什么是jarjan? 1)求割点 定义:在无向连通图中,如果去掉一个点/边,剩下的点之间不连通,那么这个点/边就被称为割点/边(或割顶/桥). 意义:由于割点和割边涉及到图的连通性,所以快速地求出割点 ...
- 图的割点 | | jzoj【P1230】 | | gdoi | |备用交换机
写在前面:我真的不知道图的割点是什么.... 看见ftp图论专题里面有个dfnlow的一个文档,于是怀着好奇的心情打开了这个罪恶的word文档,,然后就开始漫长的P1230的征讨战.... 图的割点是 ...
- nyoj20_吝啬的国度_DFS
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市, ...
- tarjan算法求割点cojs 8
tarjan求割点:cojs 8. 备用交换机 ★★ 输入文件:gd.in 输出文件:gd.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] n个城市之间有通讯网 ...
随机推荐
- angular中的jqLite的基本使用方法
angular.element() 参数要求是HTML string or DOMElement, angular.element 虽然很接近 jQuery,但是直接通过 HTML tag 去获取元素 ...
- 信息化建设中的IT规划精要
IT规划在信息化建设中发挥着"定位"和"导航"的作用,IT规划理论方法更是博大精深,细细讲来,会成为IT版本的"一千零一夜".因此,本文以& ...
- Github Page 绑定域名
http://kyle.xlau.org/posts/github-cname.html CNAME 创建一个CNAME文件,内容是你的域名,如: xlau.org 然后把此文件添加到Github仓库 ...
- PHP 中的 __FILE__ 和__DIR__常量
__DIR__ :当前内容写在哪个文件就显示这个文件目录 __FILE__ : 当前内容写在哪个文件就显示这个文件目录+文件名 比如文件 b.php 包含如下内容: <?php $basedir ...
- HTML学习笔记:1.基础概念
①HTML:Hypertext Markup Language,即超文本标记语言,文件由标记组成 ②HTML发展史 (几个重要节点): 1993(IETF):HTML 1.0 1995(W3C): ...
- Flask入门之触发器,事件,数据迁移
SQLAlchemy Core和SQLAlchemy ORM都具有各种各样的事件挂钩: 核心事件 - 这些在 Core Events中描述,并包括特定于连接池生命周期,SQL语句执行,事务生命周期以及 ...
- Spring Boot 发送邮件
需求 最近因为业务的变更,需要对老用户进行发送邮件处理.目前市面上也有很多代发邮件的接口,可以接入.由于量不是特别大,放弃了这个途径.改用我们自己通过 smtp 发送邮件来处理. 技术选择 Java ...
- bootstrap-table 列宽问题解决
<th style="width:120px" data-field="Cel1"><div class="th-inner &qu ...
- Java并发之CyclicBarrier工具类
一.CyclicBarrier工具类介绍 在上一篇文中我们介绍到了CountDownLatch工具类,其实CyclicBarrier和CountDownLatch工具类实现的功能差不多.我们可以从字面 ...
- OOP编程七大原则
OCP(Open-Closed Principle),开放封闭原则:软件实体应该扩展开放.修改封闭.实现:合理划分构件,一种可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里:一种可变性不应 ...