题目描述

输入格式

输出格式

样例

输入

4 6
1 2 1
1 3 2
1 4 3
2 3 1
2 4 2
3 4 1

输出

6

题目大意:寻找满足条件的方案数。

分析:用spfa求出最短路,再用其求出每个节点满足条件的数量,并让他们相乘就是总方案树了(eg:1到2有3种方法,2到3有4种方法,则1到3有3×4=12种方法)。

代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e6,mod=(1<<31)-1,inf=INT_MAX;
int n,m,cnt,head[N],dis[N],bk[N],cmp[N];
struct px
{int ne,to,val;
} p[N];
void add(int from,int to,int val)
{p[++cnt].to=to;p[cnt].val=val;p[cnt].ne=head[from];head[from]=cnt;
}
void spfa()
{int i;queue<int>q;for(i=2; i<=n; i++)dis[i]=inf;q.push(1);bk[1]=1;while(!q.empty()){int x=q.front();q.pop();bk[x]=0;for(i=head[x]; i; i=p[i].ne)if(dis[p[i].to]>dis[x]+p[i].val){dis[p[i].to]=dis[x]+p[i].val;if(!bk[p[i].to]) q.push(p[i].to);bk[p[i].to]=1;}}
}
int main()
{int a,b,c,i,j;long long ans=1;ios::sync_with_stdio(0);cin>>n>>m;while(m--){cin>>a>>b>>c;add(a,b,c);add(b,a,c);}spfa();for(i=1; i<=n; i++)for(j=head[i]; j; j=p[j].ne)if(dis[i]==dis[p[j].to]+p[j].val)cmp[i]++;for(i=1; i<=n; i++)if(cmp[i]) ans=ans*cmp[i]%mod;cout<<ans;
}

spfa - 黑暗城堡 - 一本通 3.1 例 1相关推荐

  1. 信息奥赛一本通1486: CH 6202 黑暗城堡 最短路径生成树计数

    1486:黑暗城堡 [题目描述] 知道黑暗城堡有 N 个房间,M 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设 Di为如果所有的通道都被修建,第 i 号房间与第 1 ...

  2. 一本通 P1486 【黑暗城堡】

    题库 :一本通 题号 :1486 题目 :黑暗城堡 link :http://ybt.ssoier.cn:8088/problem_show.php?pid=1486 思路 :这道题既然要求使加入生成 ...

  3. SPFA算法+例题 :问题 A: 黑暗城堡

    SPFA算法 算法思想: 1) 三角形中的性质:同一三角形内两边之和大于第三边. 2)由上面那一条性质,我们可以想出一个方法来更新源点到其他点的最短的路径:用中间节点k松弛u->k->v, ...

  4. LibreOJ10082. 「一本通 3.3 例 1」Word Rings【二分+SPFA】

    10082. 「一本通 3.3 例 1」Word Rings [题目描述] 传送门 [题解] 将一个字符串看成一条边,字符两端的字符看成节点,长度看成权值.二分枚举答案,最后SPFA刷正环,因为只要有 ...

  5. 【C++】「一本通 1.1 例 4」加工生产调度

    「一本通 1.1 例 4」加工生产调度 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据范围] [解析] [代码] [来源] 一本通题库-1425 LibreOJ ...

  6. 【C++】「一本通 1.1 例 2」种树

    「一本通 1.1 例 2」种树 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [解析] [代码] [来源] 一本通题库-1423 LibreOJ-10001 vjud ...

  7. #10001. 「一本通 1.1 例 2」种树

    #10001. 「一本通 1.1 例 2」种树 满足n个区间种树的要求,求最少种多少棵数 思路 按照区间的尾巴来排序,因为如果区间有重叠的种在第一个区间的尾巴可以使得种树更少,所有每次始从尾巴开始种树 ...

  8. 【C++】「一本通 1.1 例 5」智力大冲浪

    「一本通 1.1 例 5」智力大冲浪 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据范围] [解析] [代码] [来源] 一本通题库-1426 LibreOJ- ...

  9. 黑暗城堡 最短路径生成树

    dark♂城堡(233 题目描述 一个图,有n个节点,m条带权值无向边,构造一颗生成树,使得树上的点到根(1)的距离为该点到1的最短距离.输出符合条件的生成树的个数 答案模取\(2^{31}-1\) ...

  10. 黑暗城堡-(最小生成树+最短路)

    咕咕咕 prim的特点是从一个点开始,不断把距离最短的点加入图中,在以此延伸.是一种贪心的想法.当知道prim的特点的时候,就可以想到这题用prim. 这题又要求实际路径=最短路径,,也可以想到用di ...

最新文章

  1. 启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题
  2. 李东生:管理者不能变成诸葛先生
  3. py文件控制台执行时,报错:引入的模块不存在
  4. Windows Sockets 2.0 新特性
  5. LVS-DR模式原理
  6. 数据采集串口通信系统verilog设计和仿真
  7. ASP.NET Core 2.2 项目升级至 3.0 备忘录
  8. angular依赖注入_Angular依赖注入简介
  9. IT人不要一直做技术(转--我也不知道转了几圈了)
  10. 二维的完整形式是什么?
  11. 经典面试题(39):以下代码将输出的结果是什么?
  12. 实战干货!Spring Cloud Gateway 整合 OAuth2.0 实现分布式统一认证授权!
  13. 香橼做空跟谁学发第三枪 跟谁学股价盘后下跌1.37%
  14. URLRewiter使用
  15. 运用孤立森林异常检测算法,过滤异常数据
  16. 2021非科班生的Java面试之路,java思维导图笔记
  17. 集成测试之自顶向下、自底向上、三明治集成
  18. Netapp存储 硬盘显示bad label的解决办法
  19. 流量卡之家:英国运营商推出5G无限流量套餐 每月约300元
  20. 如何预防 XSS 攻击

热门文章

  1. android 底层键值映射,如何在使用android-ETE时进行键值映射.doc
  2. 房屋租赁合同法律规定是怎样的
  3. EfficientNet网络结构详解
  4. mysql的封锁协议_【眼见为实】数据库并发问题 封锁协议 隔离级别
  5. maven mybatis实现递归查询和使用存储过程
  6. 网页类参考文献的引用格式
  7. virtualbox-修改硬盘的序列号等信息
  8. vue 路由跳转 外部链接
  9. Vue实现 侧边固定定位图标 滑动隐藏
  10. Java游戏吉他英雄_《吉他英雄》全系列十作美版下载