题意:给出n个点m条单向边,求最短路的道路条数和比最短路大1的道路条数的和。

/*
用Dijkstra更新2*n次,来更新出所有点的最短路和次短路,顺便更新方案数。
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define N 1010
#define INF 500000000
using namespace std;
int head[N],vis[N][],dis[N][],f[N][],n,m,s,t;
struct node{
int v,pre,t;
};node e[N*];
void add(int i,int x,int y,int z){
e[i].v=y;
e[i].t=z;
e[i].pre=head[x];
head[x]=i;
}
void Dij()
{
dis[s][]=;f[s][]=;
for(int T=;T<=n*;T++){
int minn=INF,pos=,flag;
for(int i=;i<=n;i++){
if(dis[i][]<minn&&!vis[i][]){
minn=dis[i][];pos=i;flag=;
}
if(dis[i][]<minn&&!vis[i][]){
minn=dis[i][];pos=i;flag=;
}
}
if(!pos)break;
vis[pos][flag]=;
for(int i=head[pos];i;i=e[i].pre){
int v=e[i].v;
if(minn+e[i].t<dis[v][]){
dis[v][]=dis[v][];
f[v][]=f[v][];
dis[v][]=minn+e[i].t;
f[v][]=f[pos][flag];
}
else if(minn+e[i].t==dis[v][]){
f[v][]+=f[pos][flag];
}
else if(minn+e[i].t<dis[v][]){
dis[v][]=minn+e[i].t;
f[v][]=f[pos][flag];
}
else if(minn+e[i].t==dis[v][]){
f[v][]+=f[pos][flag];
}
}
}
if(dis[t][]==dis[t][]-)
printf("%d\n",f[t][]+f[t][]);
else
printf("%d\n",f[t][]);
}
void work(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
int x,y,z;scanf("%d%d%d",&x,&y,&z);
add(i,x,y,z);
}
scanf("%d%d",&s,&t);
Dij();
}
int main(){
int T;scanf("%d",&T);
while(T--){
memset(dis,/,sizeof(dis));
memset(vis,,sizeof(vis));
memset(f,,sizeof(f));
memset(head,,sizeof(head));
memset(e,,sizeof(e));
work();
}
return ;
}

Sightseeing(poj 3463)的更多相关文章

  1. 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)

    Charm Bracelet    POJ 3624 就是一道典型的01背包问题: #include<iostream> #include<stdio.h> #include& ...

  2. Scout YYF I(POJ 3744)

    Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5565   Accepted: 1553 Descr ...

  3. 广大暑假训练1(poj 2488) A Knight's Journey 解题报告

    题目链接:http://vjudge.net/contest/view.action?cid=51369#problem/A   (A - Children of the Candy Corn) ht ...

  4. Games:取石子游戏(POJ 1067)

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37662   Accepted: 12594 Descripti ...

  5. BFS 或 同余模定理(poj 1426)

    题目:Find The Multiple 题意:求给出的数的倍数,该倍数是只由 1与 0构成的10进制数. 思路:nonzero multiple  非零倍数  啊. 英语弱到爆炸,理解不了题意... ...

  6. 并查集+关系的传递(poj 1182)

    题目:食物链 题意:给定一些关系.判断关系的正确性,后给出的关系服从之前的关系: 思路:难点不在并查集,在于关系的判断,尤其是子节点与根节点的关系的判断: 这个关系看似没给出,但是给出子节点与父节点的 ...

  7. 昂贵的聘礼(poj 1062)

    Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...

  8. Collecting Bugs(POJ 2096)

    Collecting Bugs Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 3064   Accepted: 1505 ...

  9. Power string(poj 2406)

    题目大意,给出一个字符串s,求最大的k,使得s能表示成a^k的形式,如 abab 可以表示成(ab)^2: 方法:首先 先求kmp算法求出next数组:如果 len mod (len-next[len ...

随机推荐

  1. 【C语言入门教程】7.4 共用体

    7.4 共用体 共用体又称为联合体,是由不同的数据类型组成的一个整体.与结构体不同的是,共用体每次只能使用其中一个成员.结构体的总长度是结构体所有成员长度之和,共用体的总长度是其中最长一个数据类型的长 ...

  2. 【python网络编程】新浪爬虫:关键词搜索爬取微博数据

    上学期参加了一个大数据比赛,需要抓取大量数据,于是我从新浪微博下手,本来准备使用新浪的API的,无奈新浪并没有开放关键字搜索的API,所以只能用爬虫来获取了.幸运的是,新浪提供了一个高级搜索功能,为我 ...

  3. gc是什么,什么时候需要gc

    Java是由C++发展来的. 它摈弃了C++中一些繁琐容易出错的东西.其中有一条就是这个GC. 写C/C++程序,程序员定义了一个变量,就是在内存中开辟了一段相应的空间来存值.内存再大也是有限的,所以 ...

  4. BZOJ1212——L语言

    题目大意:每一个字符串都可以分解成一些个单词组成,现在给你一些单词,再给你一个字符串, dp吧,设f[i]为从0开始,到i结束的字符串前缀是否可以被分解,因为单词长度很小,所以,这就T了, (什么逻辑 ...

  5. php curl 实例+详解

    直接上实例 <?php //创建一个新cURL资源 $ch = curl_init(); //用于中文等特殊字符的url转码 $aurl = urlencode($address); $url= ...

  6. buildroot 制作Linux文件系统初级使用教程

    buildroot 下载地址:https://buildroot.org/download.html 放在Linux文件下解压出来. 使用make menuconfig 进行配置相关的东西. 在使用这 ...

  7. 2016年10月16日--ArrayList集合、特殊集合

    ArrayList集合 使用前引用 using System.Collections; ArrayList集合 实例化.初始化 ArrayList al = new ArrayList(); Arra ...

  8. 基于HTK语音工具包进行孤立词识别的使用教程

    选自:http://my.oschina.net/jamesju/blog/116151 1前言 最近一直在研究HTK语音识别工具包,前几天完成了工具包的安装编译和测试,这几天又按耐不住好奇,决定自己 ...

  9. HTK学习2:工具使用

    选自:http://www.cnblogs.com/mingzhao810/archive/2012/08/03/2617674.html 这个是重点,呵呵,本部分会讨论到如下内容: 1. 建立语音材 ...

  10. 关于jquery on方法进行事件绑定触发次数指数叠加的问题

    发生环境: $modal.on('click', '#search',function(e){}); 上面代码的语法是这样的: .on( events [, selector ] [, data ], ...