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 ...
随机推荐
- DevPress GridControl添加按钮列
把列的ColumnEdit属性设置为RepositoryItemButtonEdit 把TextEditStyle属性设置为HideTextEditor; 把Buttons的Kind属性设置为Glyp ...
- JAVA操作ORACLE数据库的存储过程
一.任务提出 JAVA操作oracle11g存储过程实验需要完成以下几个实例: 1.调用没有返回参数的过程(插入记录.更新记录) 2.有返回参数的过程 3.返回列表的过程 4.返回带分页的列表的过程. ...
- MongoDB 基础知识
一. 基础知识 1. MongoDB是一个文档型的数据库,文档就是一个键值对的有序集合. 例如这样:{"greeting":"hello world"} 2. ...
- 高性能Java网络框架 MINA
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...
- cocos2dx中CC_CALLBACK_1等宏中this指针实际指向
首先看代码,我在Helloworld中添加两个函数. void HelloWorld::addTarget(){ Size visibleSize = Director::getInstance()- ...
- iOS开发——高级篇——iOS 中的 NSTimer
以前的老代码在使用 NSTimer 时出现了内存泄露 NSTimer fire 我们先用 NSTimer 来做个简单的计时器,每隔5秒钟在控制台输出 Fire .比较想当然的做法是这样的: 1 2 3 ...
- /etc/bashrc和/etc/profile傻傻分不清楚?
导读 在一般的 linux 或者 unix 系统中, 都可以通过编辑 bashrc 和 profile来设置用户的工作环境, 很多文章对于 profile 和 bashrc 也都有使用, 但究竟每个文 ...
- leetcode 33. Search in Rotated Sorted Array
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- ios中二维码的使用之二: 二维码的扫描
二维码的扫描: 1,导入支持框架,<AVFoundation/AVFoundation.h> 2 ,扫描:
- XSS Filter绕过
之前挖到某金融网站的xss 但是困于xss filter无奈不好下手.只能在火狐下弹窗. 以下该图是我的测试. 后来发给一个Invoker哥们儿.成功给我发来payload成功绕过了XSS Filte ...