初见安~这里是一个我没用过的网站的和bzoj的入门OJ的传送门:CH6202 & 入门OJ P4928

Description

在顺利攻破 Lord lsp 的防线之后,lqr 一行人来到了 Lord lsp 的城堡下方。Lord lsp 黑化之后虽然拥有了强
大的超能力,能够用意念力制造建筑物,但是智商水平却没怎么增加。现在 lqr 已经搞清楚黑暗城堡有 N 个房间
,M 条可以制造的双向通道,以及每条通道的长度。lqr 深知 Lord lsp 的想法,为了避免每次都要琢磨两个房间
之间的最短路径, Lord lsp一定会把城堡修建成树形的;但是,为了尽量提高自己的移动效率,Lord lsp 一定会
使得城堡满足下面的条件:设 Di为如果所有的通道都被修建,第 i 号房间与第 1 号房间的最短路径长度;而 Si
 为实际修建的树形城堡中第 i 号房间与第1 号房间的路径长度,对于所有满足 1≤i≤N 的整数 i,有 Si = Di
。为了打败 Lord lsp,lqr想知道有多少种不同的城堡修建方案。于是 lqr 向 applepi 提出了这个问题。由于 a
pplepi 还要忙着出模拟赛,所以这个任务就交给你了。当然,你只需要输出答案对 2^31 – 1 取模之后的结果就
行了.

Input

第一行有两个整数 N 和 M。
之后 M 行,每行三个整数 X,Y 和 L,表示可以修建 X 和 Y 之间的一条长度为 L 的通道。
2≤N≤1000,N – 1≤M≤N(N – 1)/2,1≤L≤100

Output

输出一个整数,表示答案对 2^31 – 1 取模之后的结果。

Sample Input

3 3
1 2 2
1 3 1
2 3 1

Sample Output

2

Sol

这是一个最短路径树的典例之一。题意很明确——问你有多少条棵短路径树。【注意,不是多少条最短路,和最短路计数是不一样的

虽然看起来n比较大,但是是单源的所以不用担心复杂度会爆掉。求一遍最短路,然后枚举每个点以及连出去的边,看看有多少条到达这个点的路径长度是等于最短路径的。最后累乘起来就行了。

可以直接看代码的:)

#include<bits/stdc++.h>
#define maxn 1005
#define maxm 500005
#define INF 2147483647
using namespace std;
int read()
{int x = 0, ch = getchar();while(!isdigit(ch)) ch = getchar();while(isdigit(ch)) x = (x << 1) + (x << 3) + ch - '0', ch = getchar();return x;
}int n, m;
long long ans = 1;
struct edge
{int to, w, nxt;edge() {}edge(int tt, int ww, int nn) {to = tt, w = ww, nxt = nn;}
}e[maxm << 1];int head[maxn], k = 0;
void add(int u, int v, int w)
{e[k] = edge(v, w, head[u]);head[u] = k++;
}int dis[maxn];
bool vis[maxn];
void dij()//Dijkstra堆优化求最短路
{memset(dis, 0x3f, sizeof dis);priority_queue<pair<int, int > > q;q.push(make_pair(0, 1)); dis[1] = 0;while(q.size()){register int u = q.top().second, v, w; q.pop();if(vis[u]) continue;vis[u] = 1;for(int i = head[u]; ~i; i = e[i].nxt){v = e[i].to, w = e[i].w;if(dis[u] + w >= dis[v]) continue;dis[v] = dis[u] + w;q.push(make_pair(-dis[v], v));}}
}int cnt[maxn];
int main()
{memset(head, -1, sizeof head);n = read(), m = read();register int u, v, w;for(int i = 1; i <= m; i++)u = read(), v = read(), w = read(), add(u, v, w), add(v, u, w);dij();for(int i = 1; i <= n; i++){for(int j = head[i]; ~j; j = e[j].nxt)//枚举点和扩散出去的边{v = e[j].to, w = e[j].w;if(dis[v] == dis[i] + w) cnt[v]++;//注意cnt一定要开一个数组,因为是用i去更新v}}for(int i = 1; i <= n; i++)if(cnt[i]) ans = ans * cnt[i] % INF;//注意要取模printf("%lld\n", ans);return 0;
}

有点暴力呀……但是还是可以180+ms完美通过的~

超级开心,因为是自己写出来然后一遍过的>w<

迎评:)
——End——

CH6202·黑暗城堡相关推荐

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

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

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

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

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

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

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

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

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

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

  6. LOJ:黑暗城堡(最短路)

    题目描述 求一个图关于1的最小路径树的方案数 解析 想复杂了qwq 跑dij的时候如果dis[now]+w==dis[to],就使cnt[to]++ 如果更新dis,cnt赋值成1 最后乘起来即可 本 ...

  7. acwing349 黑暗城堡 ——最短路径生成树

    Link 思路 最短路径生成树计数 代码 // // #include <bits/stdc++.h> using namespace std; //#define mp make_pai ...

  8. 《算法进阶指南》最小生成树剩余题目

    CH6201 走廊泼水节 CH6202 黑暗城堡 转载于:https://www.cnblogs.com/LLbinGG/p/9910965.html

  9. OI每周刷题记录——lrllrl

    看这标题就知道我是模仿的hzwer大佬,远程%%% 大佬的OI经历让蒟蒻我深受感触,为了晚一些AFO本蒟蒻也得加油了 从高二上期第一周开始计数,每个星期天更一次,一直更到我AFO 如果这是我此生最后一 ...

  10. sol - 0x60,61,62

    [例题]走廊泼水节 设当前扫描到边x,y,长度为z,x所处的并查集为Sx,y所处的并查集为Sy: 对于任意u属于Sx,v属于Sy,我们可以知道u,v之间必连一条边 但是我们要在保证x,y之间的边属于唯 ...

最新文章

  1. Mybatis最入门---代码自动生成(generatorConfig.xml配置)
  2. Leetcode--1160.拼写单词(Java)
  3. python每日一题公众号_python每日一题总结4
  4. Base Filtering Engine 拒绝访问解法
  5. 字符串处理 百度之星资格赛 1002 列变位法解密
  6. 深度学习代码实战——基于RNN的手写数字分类
  7. upc 7833 生日蛋糕
  8. 【MPI学习4】MPI并行程序设计模式:非阻塞通信MPI程序设计
  9. MySQL error(2006) server has gone away
  10. python数据包pandas_python | 数据分析(二)- Pandas数据包
  11. IOS 开发环境,证书和授权文件是什么?
  12. 小米手机定价与《怪诞行为学》
  13. MSDC 4.3 接口规范(18)
  14. APP-Log日志采集
  15. JavaScript - 从身份证号中获取生日
  16. 全能UI设计师到底需要具备哪些能力呢?
  17. Android-69-音视频开发:AnyChat for Android SDK
  18. 按分类搜索淘宝直播接口API,淘宝直播API接口
  19. 【厚积薄发系列】C++项目总结9—ZeroMQ消息队列入门及分布式系统中应用(一)
  20. 实现同网段不同vlan通信有几种方式?纯二层网络下又是如何实现的?

热门文章

  1. 关于用ADS设计PA中电容的选择
  2. canvas入门教学(5)运动小球屏保特效与下雪特效渲染
  3. python实用教程答案 郑阿奇_VisualC++实用教程第4版_郑阿奇,习题参考答案,精品资料...
  4. 南通大学计算机学院本科考研,南通大学各学院2021考研分数线已公布
  5. mysql的封锁协议_【眼见为实】数据库并发问题 封锁协议 隔离级别
  6. 吐血整理C++书单,萌新到大牛,要看哪些书?
  7. ONE readme study
  8. 天才作文-不知道有没有人发过 很有才
  9. python flv转mp4_ffmpeg将多个flv文件合成为mp4(golang版)
  10. vue引用echarts柱形加折线统计图(周月年动态切换数据)