ACM第三次练习—1010
来源:互联网 发布:漆黑的特快列车 知乎 编辑:程序博客网 时间:2024/05/15 13:40
题意:从1走到2有最短路为定值,注意到题目不是求最短路有多少条,而是,假如有一条A到B的路,而B到家的最短路比A到家的最短路要小,那么就可以从A到B,B到家,这可以算作一条路可走。求共有多少条这样的路从
1
点到家2
。
思路:先用digkstra算法求出各点到2-1的最短距离 同时存贮其它点到2的最短距离.然后记忆化搜索 从1开始 找到符合条件的路径数。
感想:已经习惯了被虐的的感觉~
代码:
#include<iostream>
#include<queue>
using namespace std;
typedef struct n1
{
int distens,flog;
}node;
node N[1005];
int map[1005][1005],k;
int direct[1005];
void set(int n)
{
int i,j,m,n1,n2,d;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
map[i][j]=-1;
}
N[i].distens=10000000;N[i].flog=0;direct[i]=0;
}
scanf("%d",&m);
while(m--)
{
scanf("%d%d%d",&n1,&n2,&d);
if(map[n1][n2]!=0||map[n1][n2]>d)
map[n1][n2]=map[n2][n1]=d;
}
}
void spfa(int n)
{
queue<int> Q;
int now;
int i;
N[2].distens=0;N[2].flog=1;
Q.push(2);
while(!Q.empty())
{
now=Q.front();
Q.pop();
N[now].flog=0;
//if(q.x==1)break;
for(i=1;i<=n;i++)
if(map[now][i]!=-1)
{
if(N[i].distens>N[now].distens+map[now][i])
{
N[i].distens=N[now].distens+map[now][i];
if(N[i].flog==0)
{
N[i].flog=1;
Q.push(i);
}
}
}
}
}
int DFS(int now,int n)
{
int i;
if(direct[now]>0)
return direct[now];
if(now==2)
{
return 1;
}
for(i=1;i<=n;i++)
if(map[now][i]!=-1&&N[now].distens>N[i].distens)
{
direct[now]+=DFS(i,n);
}
return direct[now];
}
int main()
{
int n;
while(scanf("%d",&n)>0&&n)
{
set(n);
spfa(n);
k=DFS(1,n);
printf("%d\n",k);
}
}
0 0
- ACM第三次练习—1010
- ACM第三次练习—1010
- ACM第三次练习—1001
- ACM第三次练习—1002
- ACM第三次练习—1003
- ACM第三次练习—1004
- ACM第三次练习—1005
- ACM第三次练习—1006
- ACM第三次练习—1011
- ACM第三次练习—1015
- ACM第三次练习—1012
- ACM第三次练习—1013
- ACM第三次练习—1014
- ACM第三次练习—1016
- ACM第三次练习—1017
- ACM第三次练习—1007
- 第三次练习
- ACM第一次练习—1010K
- Codeforces Round #360 (Div. 2)-B. Lovely Palindromes
- 55. Jump Game
- Codeforces Round #360 (Div. 2) E. The Values You Can Make
- Spring MVC入门第2天--Spring、SpringMVC与MyBatis三大框架整合
- 解决sqoop java.util.NoSuchElementException
- ACM第三次练习—1010
- 为什么有人说富坚义博有着殿堂级的画功?他的画功体现在哪儿呢?
- iot 表索引dump《2》
- Ubuntu 16.04 64位 Sublime build3114 不支持搜狗输入法的解决方案
- VMware虚拟机中对ubuntu系统配置静态IP
- C++之_In_和_out_
- [Android]自定义广播之标准广播
- java框架之struts2数据类型转换(2)
- hdoj 1513 Palindrome(LCS)