题意::从起点到终点的所有的最短路中,找出离终点有X个路口的城市一共有几个

开始我用最短路+DFS从起点开始搜,超时了

换了一种方法,从终点开始搜,AC

#include<stdio.h>

int N;
const int MAX=1e9;
int use[];
int dis[];
int map[][];
bool hash[];
int tempget[];
int maxDis;
int allPoint; int start,end,shortNum; void dijk()
{
int i,j,min,rj,from;
dis[start]=;
for(i=;i<=N;i++){
min=MAX;
for(j=;j<=N;j++){
if(use[j]==)continue;
if(min>dis[j]){
min=dis[j];
rj=j;
}
}
from=rj;
for(j=;j<=N;j++){
if(use[j]==)continue;
if(dis[j]>map[from][j]+dis[from])
dis[j]=map[from][j]+dis[from];
}
use[rj]=;
}
} void dfs(int from,int leftStep,int lenth) //搜的时候从师兄所在的点开始搜
{
int i;
if(leftStep==)return ; for(i=;i<=N;i++){
if(hash[i]==)continue;
if((dis[i]+map[from][i]+lenth)!=dis[end])continue; //这样保证了从终点搜出的点都在最短路上
if(tempget[i]==){
allPoint++;tempget[i]=;
}
hash[i]=;
dfs(i,leftStep-,lenth+map[from][i]);
hash[i]=;
}
} int main()
{
int m,i,j,k;
while(scanf("%d%d",&N,&m)!=EOF){
int ll,rr,v; start=N;
end=;
allPoint=;
scanf("%d",&maxDis); for(i=;i<=N;i++){
for(j=;j<=N;j++){
map[i][j]=MAX;
hash[i]=;
}
dis[i]=MAX;
use[i]=;
tempget[i]=;
} for(i=;i<=m;i++){
scanf("%d%d%d",&ll,&rr,&v);
if(map[ll][rr]>v){
map[ll][rr]=map[rr][ll]=v;
}
} dijk();
tempget[]=end;
allPoint++;
dfs(end,maxDis,); printf("%d\n",allPoint);
} return ;
}

题目1539:师弟 ——最短路+DFS的更多相关文章

  1. PAT-1111 Online Map (30分) 最短路+dfs

    明天就要考PAT,为了应付期末已经好久没有刷题了啊啊啊啊,今天开了一道最短路,状态不是很好 1.没有读清题目要求,或者说没有读完题目,明天一定要注意 2.vis初始化的时候从1初始化到n,应该从0开始 ...

  2. HDU_1142(最短路 + dfs)

    Jimmy experiences a lot of stress at work these days, especially since his accident made working dif ...

  3. HDU 1142 A Walk Through the Forest(最短路+dfs搜索)

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  4. cf1051F. The Shortest Statement(最短路/dfs树)

    You are given a weighed undirected connected graph, consisting of nn vertices and mm edges. You shou ...

  5. Let‘s play computer game(最短路 + dfs找出所有确定长度的最短路)

    Let's play computer game Description xxxxxxxxx在疫情期间迷上了一款游戏,这个游戏一共有nnn个地点(编号为1--n1--n1--n),他每次从一个地点移动 ...

  6. 借助leetcode题目来了解BFS和DFS

    广度优先和深度优先搜索 前言 看着这两个搜索的前提的是读者具备图这一数据结构的基本知识,这些可以直接百度一波就了解了.图也像树一样,遍历具有很多的学问在里面,下面我将借用leetcode的题目讲解一下 ...

  7. 449. Serialize and Deserialize BST——几乎所有树的面试题目都会回到BFS或者DFS,使用BFS,None节点存#

    Serialization is the process of converting a data structure or object into a sequence of bits so tha ...

  8. 题目1447:最短路(Floyd算法)

    题目链接:http://ac.jobdu.com/problem.php?pid=1447 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  9. 九度oj 题目1447:最短路

    题目描述: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线 ...

随机推荐

  1. java基础(6)--数组和方法

    数组 1. 什么是数组? 数组是相同数据类型的元素组成的集合.这些元素按线性顺序排列.所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素:除最后一个元素外,每一个元素都有唯一的后继元素.(“ ...

  2. python 获取探针页面,自动查询公司出口

    在一些渗透当中,我们需要批量探针出口来达到我们的目的. 所以就有了这个丑陋简洁的小脚本. #!/usr/bin/env python #-*- coding:utf- -*- import sys i ...

  3. scala学习手记11 - 类定义

    这里会通过与Java比较的方式来说明scala是如何创建类的. 先来看一下Java中是如何定义一个类的: public class Car { private final int year; priv ...

  4. Springer Latex投稿

    大家好.我最近需要向springer旗下一期刊投稿,是用latex编写的.已经调试过,格式和出版的期刊比较接近.因为是第一次投国外期刊,所以没什么经验,在网上搜索了一些帖子,发现在投稿过程中还会出现这 ...

  5. Android中获取资源的id和url方法总结

    一,获取android工程里面的各种资源的id; 1.1 string型 比如下面: << string name=”OK”>> 客户端请求成功 << / stri ...

  6. 阿里云上如何利用yum安装jenkins

    一. 安装jdk 确保安装jenkins前jdk已经安装,如何安装见<如何在阿里云上部署war包到tomcat服务器> 二. 安装jenkins 使用以下命令安装jenkins: wget ...

  7. lightoj1370欧拉函数/素数筛

    这题有两种解法,1是根据欧拉函数性质:素数的欧拉函数值=素数-1(可根据欧拉定义看出)欧拉函数定义:小于x且与x互质的数的个数 #include<map> #include<set& ...

  8. vue.js 1.0中用v-for遍历出的li中的@click事件在移动端无效

    在vue.js使用v-for遍历出的li中的@click事件在移动端无效,在网页端可以执行,代码如下 <template> <div class="rating-secti ...

  9. Mac PyCharm专业版破解

    1. 先在PyCharm官网:http://www.https://www.jetbrains.com/pycharm/,下载PyCharm专业版安装包 2. 安装PyCharm 3. 终端执行: s ...

  10. CountDownLatch闭锁

    CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 闭锁可以延迟线程的进度直到其到达终止状态,闭锁可以用来确保某些活动直到其他活动都完 ...