The Shortest Path in Nya Graph

HDOJ-4725

  • 这题是关于最短路的问题,但是和常规的最短路有点不同的就是这里多了层次这一结构。
  • 为了解决这一问题可以把每一层抽象或者划分为两个点:入点和出点。
  • 对于每个点,将所在层的入点和该点相连,再将该点和所在层的出点相连,权值都为0.
  • 对于每一层,将该层的出点和上面一层,以及下面一层的入点相连,取值就是题目给的c。
  • 对于其余的路径,则按照题意进行连接就行了。
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<queue>
#include<vector>
#include<map>
#include<cstring>
using namespace std;
const int INF=0X3F3F3F3F;
const int maxn=300005;
int n,m,c;
struct edge{
int to;
int cost;
};
struct node{
int dis;
int to;
bool operator<(const node& t)const{
return dis>t.dis;
}
};
int d[maxn];
vector<edge> edges[maxn];
int dijikstra(int s){
priority_queue<node> q;
memset(d,INF,sizeof(d));
d[s]=0;
q.push({0,s});
while(!q.empty()){
node now=q.top();
q.pop();
int v=now.to;
int dis=now.dis;
if(d[v]<dis)
continue;
for(int i=0;i<edges[v].size();i++){
int u=edges[v][i].to;
int cost=edges[v][i].cost;
if(d[u]>d[v]+cost){
d[u]=d[v]+cost;
q.push({d[u],u});
}
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t;
cin>>t;
int k=0;
while(t--){
cin>>n>>m>>c;
int layer;
for(int i=1;i<=maxn;i++){
edges[i].clear();
}
for(int i=1;i<=n;i++)
{
cin>>layer;
edges[i].push_back({n+(layer<<1),0});//当前点向该层的出点连边
edges[n+(layer<<1|1)].push_back({i,0});//该层的入点和当前点连边
}
for(int i=1;i<=n;i++){//总共有n层
edges[n+(i<<1)].push_back({n+((i+1)<<1|1),c});
edges[n+(i<<1)].push_back({n+((i-1)<<1|1),c});
}
int from,to,cost;
for(int i=0;i<m;i++){
cin>>from>>to>>cost;
edges[from].push_back({to,cost});
edges[to].push_back({from,cost});
}
dijikstra(1);
cout<<"Case #"<<++k<<": ";
if(d[n]==INF)
cout<<-1<<endl;
else
cout<<d[n]<<endl;
}
return 0; }

HDOJ-4725(Dijikstra算法+拆点求最短路)的更多相关文章

  1. 算法复习———dijkstra求次短路(poj3255)

    题目: Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her ...

  2. Python算法与数据结构--求所有子数组的和的最大值

    Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室-玄魂 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个 ...

  3. poj2186tarjan算法缩点求出度

    poj2186tarjan算法缩点求出度 自己打一遍第一题,入门啦,入门啦 题目还算简单,多头牛,给你仰慕关系(可传递),问你最后有没有牛被所有的牛仰慕 根据关系可以建图,利用tarjan算法缩点处理 ...

  4. poj 1523Tarjan算法的含义——求取割点可以分出的连通分量的个数

    poj 1523Tarjan算法的含义——求取割点可以分出的连通分量的个数 题目大意:如题目所示 给你一些关系图——连通图,想要问你有没有个节点,损坏后,可以生成几个互相独立的网络(也就是连通分量), ...

  5. 【POJ - 2139】Six Degrees of Cowvin Bacon (Floyd算法求最短路)

    Six Degrees of Cowvin Bacon Descriptions 数学课上,WNJXYK忽然发现人缘也是可以被量化的,我们用一个人到其他所有人的平均距离来量化计算. 在这里定义人与人的 ...

  6. 2019中山纪念中学夏令营-Day14 图论初步【dijkstra算法求最短路】

    Dijkstra是我学会的第一个最短路算法,为什么不先去学SPFA呢?因为我在luogu上翻到了一张比较神奇的图: 关于SPFA -它死了 以及网上还有各位大佬的经验告诉我:SPFA这玩意很容易被卡. ...

  7. Java实现 蓝桥杯 算法训练 求和求平均值

    试题 算法训练 求和求平均值 问题描述 从键盘输入10个浮点数,求出它们的和以及平均值,要求用函数实现 输入格式 测试数据的输入一定会满足的格式. 1 10 (1行10列的向量) 输出格式 要求用户的 ...

  8. Java实现 蓝桥杯VIP 算法提高 3-2求存款

    算法提高 3-2求存款 时间限制:1.0s 内存限制:256.0MB 问题描述 见计算机程序设计基础(乔林)P50第5题. 接受两个数,一个是用户一年期定期存款金额,一个是按照百分比格式表示的利率,计 ...

  9. Java实现 蓝桥杯VIP 算法提高 3-3求圆面积表面积体积

    算法提高 3-3求圆面积表面积体积 时间限制:1.0s 内存限制:256.0MB 问题描述 接受用户输⼊的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415 ...

随机推荐

  1. 【uva 11491】Erasing and Winning(算法效率--贪心+单调队列)

    题意:有一个N位整数,要求输出删除其中D个数字之后的最大整数. 解法:贪心.(P.S.要小心,我WA了2次...)由于规定了整数的位数,那么我们要尽量让高位的数字大一些,也就是要尽量删去前面小的数字. ...

  2. poj1821——Fence

    题意: 一个栅栏一共有n(从1--n)个木板,我们找k个工人去粉刷它,li表示每个人有限制粉刷木板数量,pi表示粉刷一个木板得到的钱,si表示他开始在那个木板前面 如果一个工人要粉刷,那么他必须粉刷s ...

  3. PowerShell随笔1---背景

    既然是随笔,那就想到什么说什么,既会分享主题知识,也会分享一些其他技巧和个人学习方法,供交流. 我一般学习一个东西,我都会问几个问题: 这东西是什么? 这东西有什么用,为什么会出现,出现是为了解决什么 ...

  4. woj1012 Thingk and Count DP好题

    title: woj1012 Thingk and Count DP好题 date: 2020-03-12 categories: acm tags: [acm,dp,woj] 难题,dp好题,几何题 ...

  5. python to exe

    使用pyinstaller 打包 文件结构如下 命令行cd 进入 project文件夹 ,然后 命令 pyinstaller -F main.py 即可打包文件为一个完整的exe.(不含DLL等)

  6. Vue3(四)从jQuery 转到 Vue工程化 的捷径

    不会 webpack 还想学 vue 工程化开发 的福音 熟悉jQuery开发的,学习vue的简单使用是没用啥问题的,但是学习vue的工程化开发方式,往往会遇到各种问题,比如: webpack.nod ...

  7. 卧槽,sql注入竟然把我们的系统搞挂了

    前言 最近我在整理安全漏洞相关问题,准备在公司做一次分享.恰好,这段时间团队发现了一个sql注入漏洞:在一个公共的分页功能中,排序字段作为入参,前端页面可以自定义.在分页sql的mybatis map ...

  8. tfrecords转图片存储

    import os import shutil import tensorflow as tf import time import sys import cv2 # 图片存放位置 PATH_RES ...

  9. 微软收购 GitHub

    微软收购 GitHub 微软收购 GitHub震惊业界:引发开发者信任问题 https://news.cnblogs.com/n/598432/ GitLab refs xgqfrms 2012-20 ...

  10. node.js & fs & file read & file write

    node.js & fs & file read & file write https://nodejs.org/api/fs.html const fs = require( ...