点我看题目

题意 :中文不详述。

思路 :因为这个题加了一个要求就是路径数目得是x的倍数。所以在原来算法的一维dis数组增加到二维,用来存走的路径数%x。也可以用spfa做。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream> using namespace std ; #define LL long long
const int maxn = ;
const int maxm = ;
bool vis[maxn][maxn] ;
const LL INF = 1LL<< ;
int cnt = ;
int head[maxn] ;
LL dist[maxn][maxn] ;
int n , m ; struct node
{
int u,v,w ;
int next ;
}Edge[maxm] ; void addedge(int u,int v,int w)
{
Edge[cnt].u = u ;
Edge[cnt].v = v ;
Edge[cnt].w = w ;
Edge[cnt].next = head[u] ;
head[u] = cnt++ ;
} LL dijkstra(int s,int t,int x)
{
for(int i = ; i < n ; i++)
for(int j = ; j < x ; j++)
{
dist[i][j] = INF ;
vis[i][j] = false ;
}
dist[s][] = ;
while(true)
{
LL minn = INF ;
int u = - ;
int flag , xx ;
for(int i = ; i < n ; i++)
{
for(int j = ; j < x ; j++)
{
if(!vis[i][j] && minn > dist[i][j])
{
minn = dist[i][j] ;
u = i ;
flag = j ;
xx = (flag+)%x ;
}
}
}
if(u == -) return - ;
vis[u][flag] = true ;
if(vis[t][]) return dist[t][] ;
for(int j = head[u] ; j != - ; j = Edge[j].next)
{
int v = Edge[j].v ;
if(!vis[v][xx] && minn + Edge[j].w < dist[v][xx])
dist[v][xx] = minn + Edge[j].w ;
}
}
}
int main()
{
int T,s,t,x ;
scanf("%d",&T) ;
while(T--)
{
cnt = ;
memset(head,-,sizeof(head)) ;
// memset(vis,false,sizeof(vis) ) ;
scanf("%d %d",&n,&m) ;
int u,v, w ;
for(int i = ; i < m ; i++)
{
scanf("%d %d %d",&u,&v,&w) ;
addedge(u,v,w) ;
}
scanf("%d %d %d",&s,&t,&x) ;
LL ans = dijkstra(s,t,x) ;
if(ans != -)
printf("%lld\n",dist[t][]) ;
else printf("No Answer!\n") ;
}
return ;
}

SDUT 2622 最短路径(Dijkstra)的更多相关文章

  1. 最短路径 dijkstra

    最短路径 dijkstra #include <stdio.h> #include <string.h> #include <limits.h> #define M ...

  2. 网络最短路径Dijkstra算法

    最近在学习算法,看到有人写过的这样一个算法,我决定摘抄过来作为我的学习笔记: <span style="font-size:18px;">/* * File: shor ...

  3. c/c++ 图的最短路径 Dijkstra(迪杰斯特拉)算法

    c/c++ 图的最短路径 Dijkstra(迪杰斯特拉)算法 图的最短路径的概念: 一位旅客要从城市A到城市B,他希望选择一条途中中转次数最少的路线.假设途中每一站都需要换车,则这个问题反映到图上就是 ...

  4. 单源最短路径Dijkstra算法,多源最短路径Floyd算法

    1.单源最短路径 (1)无权图的单源最短路径 /*无权单源最短路径*/ void UnWeighted(LGraph Graph, Vertex S) { std::queue<Vertex&g ...

  5. 最短路径——Dijkstra算法和Floyd算法

    Dijkstra算法概述 Dijkstra算法是由荷兰计算机科学家狄克斯特拉(Dijkstra)于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图(无 ...

  6. 最短路径-Dijkstra算法与Floyd算法

    一.最短路径 ①在非网图中,最短路径是指两顶点之间经历的边数最少的路径. AE:1    ADE:2   ADCE:3   ABCE:3 ②在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径 ...

  7. 数据结构实验之图论七:驴友计划 ( 最短路径 Dijkstra 算法 )

    数据结构实验之图论七:驴友计划 Time Limit: 1000 ms           Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...

  8. 最短路径——Dijkstra算法以及二叉堆优化(含证明)

    一般最短路径算法习惯性的分为两种:单源最短路径算法和全顶点之间最短路径.前者是计算出从一个点出发,到达所有其余可到达顶点的距离.后者是计算出图中所有点之间的路径距离. 单源最短路径 Dijkstra算 ...

  9. 有向网络(带权的有向图)的最短路径Dijkstra算法

    什么是最短路径? 单源最短路径(所谓单源最短路径就是只指定一个顶点,最短路径是指其他顶点和这个顶点之间的路径的权值的最小值) 什么是最短路径问题? 给定一带权图,图中每条边的权值是非负的,代表着两顶点 ...

随机推荐

  1. 聊一聊 AngularJS 服务

    什么是服务? 在 AngularJS 中,服务是一个函数或对象,可在你的 AngularJS 应用中使用. AngularJS 内建了30 多个服务. 为什么使用服务? 在很多服务中,比如 $loca ...

  2. linux---基本查找命令

    基本查找命令 一.文件查找命令:find 最大特点:功能强大,可以使用文件的各种属性作为查找条件来查找文件 文件属性:文件权限.文件所有者.文件大小.修改时间.文件类型 语法:find[起始查找目录] ...

  3. Android进阶——声波振幅显示

    最近博主想做一个app,中间有一个是录音的功能.于是博主想把UI做的好看一些,想仿照微信或者QQ语音输入时,能够随着声音的大小显示声波振幅.于是查找了一些资料,现在把这个功能的Demo分享给大家,以后 ...

  4. sql的游标使用(转)

    游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的.而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服. 正常面向集合的思维方式是: ...

  5. OC班级类

    // // MyClass.h // OC2_班级类 // // Created by zhangxueming on 15/6/12. // Copyright (c) 2015年 zhangxue ...

  6. java web-----MVC设计模式

    一,MVC将代码分为三个部分,分别为视图(jsp),模型(javaBean),控制部分(servlet); 视图基本为 jsp 文件,主要内容为界面的html代码,负责显示界面: 模型为 javaBe ...

  7. FreeMarker语法2

    FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:<#-- ... -->格式部分,不会输 ...

  8. Move can only be called on an active agent that has been placed a Navmesh的解决办法

    这是虽然将场景物体添加了Nav Mesh,但是没有进行Bake(烘焙)导致的. 在网上查了 很多久,都没解决这个error,最后发现是因为在unity4.6以下版本中,Bake是Navigation下 ...

  9. html元素li移动动态效果

    在日常工作当中遇到了一个问题,平铺型列表修改单个内容设置排序时列表排序应与之对应.一下是一个小小的例子:简单的解决了此类问题,以浮动的形式改变当前的数据的显示顺序.有不足之处欢迎指点,后期还会做一个更 ...

  10. 安装Apache Web 服务器软件

    Apache下载地址:http://pan.baidu.com/s/1kTKCEOn 1: 右击安装 2: 3: 4: 5:安装成功: 6:测试在浏览器地址栏输入:localhost; 会出现一个页面 ...