https://www.luogu.org/problemnew/show/P1608

题意https://www.cnblogs.com/rmy020718/p/9440588.html相似,建议还没做的先去做一下。

当你看完上一题,就已经对最短路计数大体有一个思想了,但是本题中没有说不保证没有重边和自环,那么开一个map数组记录一下就好了,自环的话我使用spfa解决的,那么我们就可以按部就班的写最短路计数了。

不过有个bug源自于spfa算法,见下图。

当你按spfa的手动模拟的时候你会发现到达5号点的路径有3条,但是其真实路径只有两条,我们应该在处理完每一个点后将这个点的路径数量清零(在其更新完其他点以后),避免二次计算的时候再次累加。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<queue>
using namespace std;
int i,j,m,n;
int head[];
int us[];
int t[];
int dis[];
int a[][];
queue<int>q; int r()
{
int aans=;
char ch=getchar();
while(ch<''||ch>'')
ch=getchar();
while(ch>=''&&ch<='')
{
aans*=;
aans+=ch-'';
ch=getchar();
}
return aans;
} int spfa(int x)
{
q.push(x);dis[x]=;t[x]=;
while(!q.empty())
{
int x=q.front();
q.pop();
us[x]=;
if(x==n)
continue;
for(i=;i<=n;i++)
{
if(dis[x]+a[x][i]==dis[i])
t[i]+=t[x];
if(dis[x]+a[x][i]<dis[i])
{
dis[i]=dis[x]+a[x][i];
t[i]=t[x];
}
if(t[i]&&!us[i])
us[i]=,q.push(i);
}
t[x]=;
} } int main()
{
n=r(),m=r();
int x,y,z;
memset(a,,sizeof(a));
memset(dis,,sizeof(dis)); for(i=;i<=m;i++)
{
x=r(),y=r(),z=r();
if(a[x][y])a[x][y]=min(z,a[x][y]);
else a[x][y]=z;
}
spfa();
if(dis[n]!=a[][])cout<<dis[n]<<" "<<t[n]<<endl;
else cout<<"No answer"<<endl;
return ;
}

最新文章

  1. boost之lexical_cast
  2. 20145224&amp;20145238 《信息安全系统设计基础》 第五次实验
  3. 如何设置eclipse字体及大小
  4. &quot;本地泛解析&quot;或者叫做”域名劫持泛解析“,做开发二级域名在内网测试
  5. spm总结
  6. JSON 之 SuperObject(6): 方法
  7. “Win”组合键
  8. 2301: [HAOI2011]Problem b
  9. java设计模式之 单例模式 Singleton
  10. 一行JavaScript代码获取页面中的所有超链接地址
  11. InfluxDB读写性能测试
  12. MySQL索引的使用方式
  13. python进阶-------进程线程(二)
  14. 在windows10上配置Android的环境变量
  15. OpenCV轮廓检测,计算物体旋转角度
  16. keepalived+双主实践HA
  17. Android给控件添加默认点击效果
  18. 微信支付之JsApi支付
  19. redis 中用正则找key
  20. linux初始

热门文章

  1. SimpleDateFormat并发隐患及其解决
  2. 用script标签加载
  3. 两行代码搞定网站gzip压缩
  4. hdoj5835【水题】
  5. qq教xixi写模拟加法【非常爆炸】
  6. Cg(C for Graphic)语言语义绑定方法(转)
  7. bzoj 1814: Ural 1519 Formula 1【插头dp】
  8. Fiddler 学习
  9. git for mac
  10. Hdu 5459 Jesus Is Here (2015 ACM/ICPC Asia Regional Shenyang Online) 递推