【LOJ#10064】黑暗城堡
题目大意:定义一个无向图的最短路径生成树如下:在该无向图的生成树中,任意一个节点到根节点的距离均等于根节点到该节点的最短路。求有多少种最短路径生成树。
题解:首先跑一遍 dij 求出从根节点到每个节点的最短路,再跑 prim,模拟该生成树生成的过程,即:维护最短路径生成树集合,对于每个新加入生成树集合的点,对与其相邻的且不在生成树中的点进行判断,若满足 \(d[u]+e[i].to==d[v]\) 则 v 的可能情况加一。最后利用乘法原理统计答案即可。
代码如下
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
const int maxv=1010;
const int maxe=1e6+10;
const int mod=(1LL<<31)-1;
inline int read(){
	int x=0,f=1;char ch;
	do{ch=getchar();if(ch=='-')f=-1;}while(!isdigit(ch));
	do{x=x*10+ch-'0';ch=getchar();}while(isdigit(ch));
	return f*x;
}
struct node{
	int nxt,to,w;
}e[maxe];
int tot=1,head[maxv];
inline void add_edge(int from,int to,int w){
	e[++tot]=node{head[from],to,w},head[from]=tot;
}
int n,m,d[maxv],stk[maxv],top,cnt[maxv];
long long ans=1;
bool vis[maxv];
priority_queue<P> q;
void read_and_parse(){
	n=read(),m=read();
	for(int i=1,x,y,z;i<=m;i++){
		x=read(),y=read(),z=read();
		add_edge(x,y,z),add_edge(y,x,z);
	}
}
void dij(){
	memset(d,0x3f,sizeof(d));
	d[1]=0,q.push(make_pair(0,1));
	while(q.size()){
		int u=q.top().second;q.pop();
		if(vis[u])continue;
		vis[u]=1,stk[++top]=u;
		for(int i=head[u];i;i=e[i].nxt){
			int v=e[i].to,w=e[i].w;
			if(d[v]>d[u]+w){
				d[v]=d[u]+w;
				q.push(make_pair(-d[v],v));
			}
		}
	}
}
void prim(){
	memset(vis,0,sizeof(vis));
	cnt[1]=1;
	for(int i=1;i<=n;i++){
		int u=stk[i];
		vis[u]=1;
		for(int j=head[u];j;j=e[j].nxt){
			int v=e[j].to;if(vis[v])continue;
			if(d[v]==d[u]+e[j].w)++cnt[v];
		}
	}
	for(int i=1;i<=n;i++)ans=ans*cnt[i]%mod;
}
void solve(){
	dij();
	prim();
	printf("%lld\n",ans);
}
int main(){
	read_and_parse();
	solve();
	return 0;
}
【LOJ#10064】黑暗城堡的更多相关文章
- [LOJ#10064]黑暗城堡
		Description 在顺利攻破 Lord lsp 的防线之后,lqr 一行人来到了 Lord lsp 的城堡下方.Lord lsp 黑化之后虽然拥有了强大的超能力,能够用意念力制造建筑物,但是智商 ... 
- LOJ#10064. 「一本通 3.1 例 1」黑暗城堡
		LOJ#10064. 「一本通 3.1 例 1」黑暗城堡 题目描述 你知道黑暗城堡有$N$个房间,$M$条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设$D_i$为如果 ... 
- loj黑暗城堡
		黑暗城堡 题目描述 你知道黑暗城堡有\(N\)个房间,M 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设\(D_i\)为如果所有的通道都被修建,第i号房间与第1号房间 ... 
- 【loj10064】黑暗城堡
		#10064. 「一本通 3.1 例 1」黑暗城堡 内存限制:512 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 上传者: 1bentong 提交 ... 
- 一本通 P1486 【黑暗城堡】
		题库 :一本通 题号 :1486 题目 :黑暗城堡 link :http://ybt.ssoier.cn:8088/problem_show.php?pid=1486 思路 :这道题既然要求使加入生成 ... 
- 「CH6202」黑暗城堡
		「CH6202」黑暗城堡 传送门 这道题是要让我们求以点 \(1\) 为源点的最短路树的方案数. 我们先跑一遍最短路,然后考虑类似 \(\text{Prim}\) 的过程. 当我们把点 \(x\) 加 ... 
- 信息奥赛一本通1486: CH 6202 黑暗城堡 最短路径生成树计数
		1486:黑暗城堡 [题目描述] 知道黑暗城堡有 N 个房间,M 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设 Di为如果所有的通道都被修建,第 i 号房间与第 1 ... 
- LOJ10064黑暗城堡
		题目描述你知道黑暗城堡有 N 个房间,M 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设 Di 为如果所有的通道都被修建,第 i 号房间与第 1 号房间的最短路径长 ... 
- T57274 黑暗城堡
		传送门 思路: 先求出各个点到 1 的最短路径.分别用两个数组将最短路径记录下来(一个要用来排序).按排序后的 dis 值从小到大枚举各点加入树有多少种方案,最后根据乘法原理把各个点的方案数乘起来就是 ... 
随机推荐
- 20155311《网络对抗》Web基础
			20155311<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ... 
- 20155320《网络对抗》MSF基础应用
			20155320<网络对抗>MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode 于exploit,我觉得exploit是利用一些工具和方法,通过 ... 
- 【Qt】QLabel实现的圆形图像
			本篇只描述圆形图像的两种实现方式,动态阴影边框如下: [Qt]QLabel之动态阴影边框 目前实现的效果如下: 左右两边实现的方式不同: 右边比较简单 min-width: 100px; max-wi ... 
- 【LG4248】[AHOI2013]差异
			[LG4248][AHOI2013]差异 题面 洛谷 题解 后缀数组版做法戳我 我们将原串\(reverse\),根据后缀自动机的性质,两个后缀的\(lcp\)一定是我们在反串后两个前缀的\(lca\ ... 
- IT高管和易筋经的故事
			老板是我非常敬重的前领导之一,他的一些管理风格,也影响了后来我对技术团队的管理. 理想企业 什么是程序员理想的IT企业?公司里面有良好的同事关系,合理的产品需求和开发进度,最好老板懂点编程,这样公司更 ... 
- Hexo站点之域名配置【2】
			该系列博客列表请访问:http://www.cnblogs.com/penglei-it/category/934299.html 摘要 因为Hexo个人博客是托管在github之上,每次访问都要使用 ... 
- Shell 基础 -- 输入、输出重定向
			一.文件描述符 文件描述符是一个非负的整数,Linux 中每个运行中的程序(进程),都有一些与之关联的文件描述符,你可以使用文件描述符来访问打开的文件或设备.在标准 I/O 库中,与文件描述符对应的是 ... 
- Windos 下python2.7安装 pymssql 解决方案
			最近在学python,到安装pymssql这一块遇到了不少问题. 第一:如何安装python 模块,也是最主要的问题. 可以这么理解:在安装python其它模块之前,可以先安装一个负责安装模块的模块. ... 
- Selenium--调用js,对话框处理 (python)
			前言: 本次教程针对Python语言,selenium教程(调用js,对话框处理) 一.对话框处理 更多的时候我们在实际的应用中碰到的并不是简单警告框,而是提供更多功能的会话框. 本节重点: 1.打开 ... 
- 第三次Scrum meeting
			第三次Scrum meeting 会议主要内容: 测试方面:确定测试的各个环节以及测试的相关要求,完成初步的功能测试.同时在测试时仔细记录相应错误信息,并进行备注. 沟通方面:同Dream团队(学霸前 ... 
