CH6202 黑暗城堡 最短路径生成树
如果没有负权边,就从路径长度单调递增上考虑问题。
跑完最短路后,让点根据离1的距离排个序。这样就可以统一顺序,后面的点一定是接在前面的点后面。
最小路径生成树上增加一个点实际上跟他具体形状没有任何关系,直接暴力判断能不能贴在前面的点后面就行。而且把这个点贴在哪里(所有合法的位置)都是无所谓的。
注意路径的初始化成INF!
#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i<(b);i++)
#define lep(i,a,b) for(int i=(a);i>=(b);i--)
#define lepp(i,a,b) for(int i=(a);i>(b);i--)
#define pii pair<int,int>
#define pll pair<long long,long long>
#define mp make_pair
#define All(x) x.begin(),x.end()
#define ms(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define INFF 0x3f3f3f3f3f3f3f3f
#define multi int T;scanf("%d",&T);while(T--)
using namespace std;
typedef long long ll;
typedef double db;
const int N=1e3+5;
const ll mod=(1LL<<31)-1;
const db eps=1e-6;
const db pi=acos(-1.0);
int vis[N],dis[N],n,m,tr[N][N],gr[N];
bool cmp(const int &i,const int &j){return dis[i]<dis[j];
}
int main(){#ifndef ONLINE_JUDGEfreopen("D:\\work\\data.in","r",stdin);#endifms(tr,INF);//不要忘了初始化cin>>n>>m;rep(i,1,m){int u,v,w;cin>>u>>v>>w;tr[u][v]=tr[v][u]=w;}ms(dis,INF);dis[1]=0;priority_queue<pii>q;q.push(mp(0,1));while(q.size()){int cur=q.top().second;q.pop();if(vis[cur]) continue;vis[cur]=1;rep(i,1,n){if(vis[i]==0&&tr[cur][i]+dis[cur]<dis[i]){dis[i]=tr[cur][i]+dis[cur];q.push(mp(-dis[i],i));}}}rep(i,1,n) gr[i]=i;sort(gr+1,gr+n+1,cmp);ll ans=1;rep(i,2,n){ll tmp=0;rep(j,1,i-1)if(dis[gr[j]]+tr[gr[j]][gr[i]]==dis[gr[i]]) ++tmp;ans=ans*tmp%mod;}cout<<ans<<endl;
}
CH6202 黑暗城堡 最短路径生成树相关推荐
- 信息奥赛一本通1486: CH 6202 黑暗城堡 最短路径生成树计数
1486:黑暗城堡 [题目描述] 知道黑暗城堡有 N 个房间,M 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设 Di为如果所有的通道都被修建,第 i 号房间与第 1 ...
- acwing349 黑暗城堡 ——最短路径生成树
Link 思路 最短路径生成树计数 代码 // // #include <bits/stdc++.h> using namespace std; //#define mp make_pai ...
- 黑暗城堡 最短路径生成树
dark♂城堡(233 题目描述 一个图,有n个节点,m条带权值无向边,构造一颗生成树,使得树上的点到根(1)的距离为该点到1的最短距离.输出符合条件的生成树的个数 答案模取\(2^{31}-1\) ...
- 一本通 P1486 【黑暗城堡】
题库 :一本通 题号 :1486 题目 :黑暗城堡 link :http://ybt.ssoier.cn:8088/problem_show.php?pid=1486 思路 :这道题既然要求使加入生成 ...
- 黑暗城堡-(最小生成树+最短路)
咕咕咕 prim的特点是从一个点开始,不断把距离最短的点加入图中,在以此延伸.是一种贪心的想法.当知道prim的特点的时候,就可以想到这题用prim. 这题又要求实际路径=最短路径,,也可以想到用di ...
- SPFA算法+例题 :问题 A: 黑暗城堡
SPFA算法 算法思想: 1) 三角形中的性质:同一三角形内两边之和大于第三边. 2)由上面那一条性质,我们可以想出一个方法来更新源点到其他点的最短的路径:用中间节点k松弛u->k->v, ...
- 最短路径生成树与最小生成树
虽然放在一起,但是他们两个除了都是树之外没有一点关系. 最短路径生成树,就是ROOT根节点到达任意点距离最短的路径所构成的树,就是最短路径生成树.我画两个图给大家理解. 最短路径生成树 最小生成树 这 ...
- 最短路径生成树计数+最短路径生成树
最短路径生成树计数. 我们应该先明白什么是最短路径生成树,不会戳这里. 计数方法明显是要使用乘法原理计数,也就是说我们可以得出每一步的方案数再乘进答案中. 接下来考虑如何的出每一步的方案数,所谓方案数 ...
- LOJ:黑暗城堡(最短路)
题目描述 求一个图关于1的最小路径树的方案数 解析 想复杂了qwq 跑dij的时候如果dis[now]+w==dis[to],就使cnt[to]++ 如果更新dis,cnt赋值成1 最后乘起来即可 本 ...
- OI每周刷题记录——lrllrl
看这标题就知道我是模仿的hzwer大佬,远程%%% 大佬的OI经历让蒟蒻我深受感触,为了晚一些AFO本蒟蒻也得加油了 从高二上期第一周开始计数,每个星期天更一次,一直更到我AFO 如果这是我此生最后一 ...
最新文章
- db2 linux 导入数据_「软件资料」-「软件使用」-Linux 导入、导出 MySQL 数据库命令...
- Matlab与线性代数 -- 矩阵的大小
- 使用 Xbrowser4远程连接到 CentOS 7
- Github标星57k+,热榜第一,用Python实现所有算法
- java web与android互通的aes算法
- Jeecg_3.6新版本功能专题讲解 - 公开课(自定义表单、数据权限)
- C# IOCP完成端口模型(简单实用高效)
- Intel 64/x86_64/IA-32/x86处理器 - 指令格式(7) - 80386/32位指令格式概述
- Ubuntu18.04 安装nextcloud
- linux日常运维命令
- 检验检测系统管理服务器,检验检测管理平台
- 离线百度地图,添加按钮点击切换卫星地图和街道地图(纯JS)
- python如何画三角形的外接圆_用python画三角形外接圆和内切圆
- 手机上怎么做电子档文件(实用技巧)
- 网易考拉海购Java开发面经(已拿offer)
- [CTSC2016]时空旅行(线段树+凸包)
- easyExcel的复杂表头多级表头导入
- 代码已上传至googlecode
- NC WebService开发参考
- 第九章 知识结构图谱