Sightseeing(poj 3463)
题意:给出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)的更多相关文章
- 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)
Charm Bracelet POJ 3624 就是一道典型的01背包问题: #include<iostream> #include<stdio.h> #include& ...
- Scout YYF I(POJ 3744)
Scout YYF I Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5565 Accepted: 1553 Descr ...
- 广大暑假训练1(poj 2488) A Knight's Journey 解题报告
题目链接:http://vjudge.net/contest/view.action?cid=51369#problem/A (A - Children of the Candy Corn) ht ...
- Games:取石子游戏(POJ 1067)
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 37662 Accepted: 12594 Descripti ...
- BFS 或 同余模定理(poj 1426)
题目:Find The Multiple 题意:求给出的数的倍数,该倍数是只由 1与 0构成的10进制数. 思路:nonzero multiple 非零倍数 啊. 英语弱到爆炸,理解不了题意... ...
- 并查集+关系的传递(poj 1182)
题目:食物链 题意:给定一些关系.判断关系的正确性,后给出的关系服从之前的关系: 思路:难点不在并查集,在于关系的判断,尤其是子节点与根节点的关系的判断: 这个关系看似没给出,但是给出子节点与父节点的 ...
- 昂贵的聘礼(poj 1062)
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
- Collecting Bugs(POJ 2096)
Collecting Bugs Time Limit: 10000MS Memory Limit: 64000K Total Submissions: 3064 Accepted: 1505 ...
- Power string(poj 2406)
题目大意,给出一个字符串s,求最大的k,使得s能表示成a^k的形式,如 abab 可以表示成(ab)^2: 方法:首先 先求kmp算法求出next数组:如果 len mod (len-next[len ...
随机推荐
- JS/HTML 保存图片到本地:HTML <a> download 属性
JS如何保存图片到本地呢?自己百度一下吧! 这里想要说的是,可以利用 HTML 的 <a> 标签 来是实现保存图片到本地的功能,参考代码如下: <a href="http: ...
- 隐藏NavigationBar时的一个坑
http://www.jianshu.com/p/efb960fed457 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear: ...
- css 设计总结
一.背景图片的拉伸: backgroud-size 说明: http://www.w3school.com.cn/cssref/pr_background-size.asp 效果: http:// ...
- Android 利用SharedPreferences保存与删除 用户登录数据
创建SharedPreferences对象: SharedPreferences sharedPreferences = context.getSharedPreferences("user ...
- Android客户端的图形化拖放操作的设计实现
为什么要拖放?拖放在某些UI交互中可以简化用户操作. 拖放的步骤包括哪些?“Drag and Drop”,拖放,顾名思义,总共就分三步:1, 开始拖起来:2, 正在拖:3, 放下,进行操作:在这三步里 ...
- php搜索分页
最近做搜索分页的时候,发现第一页显示正常,点击到下一页的时候,显示结果变成了搜索全部内容. 仔细查看代码,发现当第一次输入关键词,提交到查询控制器的时候,表单提交的关键字不为空,可是点击到下一页的时候 ...
- TortoiseSVN使用方法
1.初始化本地SVN目录,在某个文件夹鼠标右键点击. 初始化后目录 2.将某个目录下代码,添加到SVN目录中. 3.将添加进去代码提取出来. 在某 ...
- ubuntu查找软件包
sudo apt-cache search s_name
- CSS——display和float
1.display 属性规定元素应该生成的框的类型. 值 描述 none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素 ...
- Windows Setup progject : 修改默认安装路径
建立Windows Setup project 之后,程序安装的时候会默认选择系统路径- 具体格式为:[ProgramFilesFolder][Manufacturer]\[ProductName], ...