没什么好说的,没有想清楚结果把计算ans数组时候用到的链式向前星的head写错了。。WA得还剩20分。
应该要写head[v[i].v]的,不能写head[i],因为现在的第i个位置上放的已经不是原来的第i个点了。

#include<bits/stdc++.h>
#define rep(i,l,r) for(int i=(l);i<=(r);i++)
#define per(i,r,l) for(int i=(r);i>=(l);i--)
#define random(l,r) ((l)+rand()%((r)-(l)+1))
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int inf=1e9+10,mod=2147483647,N=2222,M=2e6+10000;
const double eps=1e-6;
struct node{int v,dis;bool friend operator < (node a,node b){return a.dis<b.dis;}
}v[N];
int nxt[M],to[M],w[M],head[N],len;
int n,m,ans[N],pos[N];
bool vis[N];
ll anss=1;
inline void addedge(int a,int b,int ww){nxt[++len]=head[a]; head[a]=len; to[len]=b; w[len]=ww;
}
inline void Dijkstra(){rep(i,1,n) v[i].v=i,v[i].dis=inf;v[1].dis=0;rep(i,1,n-1){int now=inf,k=0;rep(j,1,n) if((vis[j]==false)&&(v[j].dis<now)) k=j,now=v[j].dis;vis[k]=true;for(int e=head[k];e!=0;e=nxt[e]) v[to[e]].dis=min(v[to[e]].dis,v[k].dis+w[e]);}
}
int main(){ios::sync_with_stdio(false); cin.tie(0);cin>>n>>m;rep(i,1,m){int a,b,w; cin>>a>>b>>w;addedge(a,b,w); addedge(b,a,w);}Dijkstra();//rep(i,1,n) printf("dis[%d]=%d\n",i,v[i].dis);sort(v+1,v+1+n);rep(i,1,n) pos[v[i].v]=i;//rep(i,1,n) printf("v[%d]=%d\n",i,v[i].v);ans[v[1].v]=1;rep(i,1,n){for(int e=head[v[i].v];e!=0;e=nxt[e]){if(v[pos[to[e]]].dis==v[i].dis+w[e]) ans[v[pos[to[e]]].v]++;}}rep(i,1,n) anss=(anss*(long long)(ans[i]>0?ans[i]:1))%mod;cout<<anss;return 0;
}

图论-生成树-黑暗城堡相关推荐

  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. 黑暗城堡 最短路径生成树

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

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

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

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

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

  7. 图论 —— 生成树 —— 生成树计数

    [概述] 给出一个由 n 个点和 m 条边构成的简单无向加权图,有时需要对生成树计数或对最小生成树计数. 当对生成树计数时,利用基尔霍夫矩阵的 Matrix-Tree 定理即可解决,而对最小生成树计数 ...

  8. 图论 —— 生成树 —— 曼哈顿距离最小生成树

    [概述] 当给出一些二维平面的点时,记两点间距离为曼哈顿距离,此时的最小生成树,称为曼哈顿最小距离生成树. 对于 n 个点来说,最朴素的做法是暴力求出所有所有点两两之间的曼哈顿距离,然后再跑最小生成树 ...

  9. 图论 —— 生成树 —— 次小生成树

    [概述] 对于给定的无向图 G=(V,E),设 T 是图 G 的一个最小生成树,那么,对于除 T 外的第二小的生成树 T' 即为图的次小生成树. 简单来说,最小生成树是生成树的最小解,次小生成树是生成 ...

  10. 图论 —— 生成树 —— 增量最小生成树

    [概述] 所谓最小增量生成树问题,即:给定包含 n 个点的空图,依次加入 m 条带权边,每次加入一条边,就输出当前图中最小生成树的权值,如果没有生成树,则输出无解 求解最小增量生成树的方法是:根据最小 ...

最新文章

  1. javascript搜索框联想搜索_js实现类似于联想关键词的搜索功能(附代码)
  2. 【LOJ】#2014. 「SCOI2016」萌萌哒
  3. 管道过滤器(Pipe-And-Filter)模式
  4. teststand调用python模块_TestStand 界面重置【小技巧】
  5. 深度学习中的多任务学习介绍
  6. Python实现日周月排行榜
  7. Linux中reboot和shutdown的异同
  8. 几个免费的长链接缩短工具
  9. R语言survival包Surv函数创建生存对象、建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、drop1函数计算cox回归模型自变量似然比检验值、删除冗余变量重新构建cox模型
  10. 技术开放平台,推进开放银行布局
  11. Mybatis常见错误 Could not find resource com/mybatis/mapper/UserInfoMapper.xml
  12. 優しさの理由 (冰菓op)歌词
  13. 【Codeforces 526F】【JZOJ4687】奇袭
  14. 苹果 App 转移图文详解
  15. 共享开源技术,共建开放生态丨平凯星辰余梦杰出席 2022 世界互联网大会开源论坛圆桌对话
  16. 软件学院研究方向,对研究方向迷茫的同学一定要看(据说是一位北大软院前辈写的)
  17. UnityShader案例篇—绘制雨滴
  18. css画表格多级表头,element UI实现动态生成多级表头
  19. 编程高手成长的六个阶段,你处于哪一阶段?
  20. platform驱动

热门文章

  1. windows服务器查看lls证书
  2. Layui 表格分页控件
  3. 张小丫第一次微信支付(讲解)
  4. Activity透明主题导致behind Activity重绘的解决方法
  5. python实现离职滤波_如何用Python预测员工离职率?
  6. 新入职公司离职率高怎么办
  7. 为什么感知机不能表示异或?
  8. 前端项目没数据?教你抓取各大网站api
  9. python 象棋 算法_象棋AI算法(二)
  10. 刀魔王带你了解创口贴圆辊刀模的应用