黑暗城堡 最短路径生成树
dark♂城堡(233
题目描述
一个图,有n个节点,m条带权值无向边,构造一颗生成树,使得树上的点到根(1)的距离为该点到1的最短距离。输出符合条件的生成树的个数
答案模取\(2^{31}-1\)
输入输出格式略
数据范围 \(n<=1000\)
这道题如果不考虑时间优化的话,跑\(O(N^2)\)的dij是完全可以的;
如何统计个数? 我们相当于把点i 连在所有比他到根的最短距离短的点上,并且判断是否合法。利用乘法原理计数就可以了。
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
int map[1010][1010];
int point[1010],dis[1010];
bool vis[1010];
const long long mode=(1LL<<31)-1;
bool compare(const int &a,const int &b)
{return dis[a]<dis[b];
}
int main()
{int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)map[i][j]=0x7ffffff;int a,b,c;for(int i=1;i<=m;i++){scanf("%d%d%d",&b,&a,&c);map[a][b]=map[b][a]=min(map[a][b],c);}for(int i=1;i<=n;i++) point[i]=i,dis[i]=0x7ffffff;dis[1]=0;for(int i=1;i<=n;i++){int cur=-1;for(int j=1;j<=n;j++)if((cur==-1||dis[cur]>dis[j])&&!vis[j])cur=j;vis[cur]=true;for(int j=1;j<=n;j++)dis[j]=min(dis[j],dis[cur]+map[j][cur]);}//n^2 的 dijsort(point+1,point+1+n,compare);//point里存点的标号,然后按照dis排序long long ans=1;for(int i=2;i<=n;i++){long long tot=0;for(int j=1;j<i;j++)if(dis[point[i]]-map[point[i]][point[j]]==dis[point[j]])//符合条件的点tot+=1;ans=(ans*tot)%mode;//乘法原理计数}printf("%lld",ans);//输出
}
转载于:https://www.cnblogs.com/Lance1ot/p/9228414.html
黑暗城堡 最短路径生成树相关推荐
- 信息奥赛一本通1486: CH 6202 黑暗城堡 最短路径生成树计数
1486:黑暗城堡 [题目描述] 知道黑暗城堡有 N 个房间,M 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设 Di为如果所有的通道都被修建,第 i 号房间与第 1 ...
- acwing349 黑暗城堡 ——最短路径生成树
Link 思路 最短路径生成树计数 代码 // // #include <bits/stdc++.h> using namespace std; //#define mp make_pai ...
- 一本通 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 如果这是我此生最后一 ...
最新文章
- Http 请求头中的 Proxy-Connection
- python用jieba进行分词并可视化
- Java多线程闲聊(五):AQS
- 深度探索C++ 对象模型(6)-Data member的存取
- Linux 查询 OS、CPU、内存、硬盘信息
- Creating Apps With Material Design —— Creating Lists and Cards
- 关于·nowrap与width
- delphi连接mysql不用添加DSN(mysql connector odbc 5.1版)
- 一位财务自由人士的投资修行
- 【端口扫描工具】nmap核心使用方法
- dell笔记本耳机怎么设置_戴尔笔记本电脑怎样设置耳机
- 百度SEM/SEO关键词批量自动分词工具
- 10^5以下素数筛法——素数表法
- dig命令的常见用法详解
- 多玩英雄联盟插件盒子v3.8.0
- 获取最新职位通过在线作业分类
- C. New Year and the Sphere Transmission
- Sketchup快捷键设置存储位置
- 【JY】YJK前处理参数详解及常见问题分析(五):风荷载信息
- RocksDB Compaction(二)源码分析
热门文章
- python可以做什么 知乎-python能做什么知乎
- python测试开发自学教程-自动化平台测试开发- Python 测试开发实战
- php和python写爬虫-python和php哪个更适合写爬虫
- python基础语法第10关作业-【python基础语法】第8天作业练习题
- python自学需要多久-自学Python多久能找到工作
- python切片语法-Python字符串切片操作知识详解
- python软件是免费的吗-python软件都是免费的吗
- LeetCode Partition Equal Subset Sum(动态规划)
- 小米抢购限流峰值系统架构历年演进历程
- nginx的启动初始化过程(一)