小W计树

排列组合思想.
先跑一遍最短路, 再从1节点开始搜索, 假如搜到一个点的路径长度等于最短路, 则记录到达该点的路径数 + 1.
最后遍历一遍, ans *= rec[i]
输出答案即可.
关键在于想到这个排列组合的思想.
#include<cstdio>
#include<cstring>
#include<algorithm>
#define F(x) for (L i=h[x],v=e[i].v,w=e[i].w;i;i=e[i].next,v=e[i].v,w=e[i].w)
using namespace std;
typedef long long L;
void read(L &x) {
x=0;
char c=getchar();
for (;c<'0' || c>'9';c=getchar());
for (;'0'<=c && c<='9';c=getchar()) x=x*10+c-'0';
}
const L Q=2147483647;
const L maxn=1e3+10;
const L maxm=maxn*maxn;
struct edge {
L v,w,next;
} e[maxm];
L tot=0,h[maxn];
inline void add(L u,L v,L w) {
e[++tot].v=v;e[tot].w=w;e[tot].next=h[u];
h[u]=tot;
}
L q[maxm],ql,qr,d[maxn];
bool inq[maxn];
void spfa(L s) {
memset(inq,0,sizeof inq);
memset(d,0x3f,sizeof d);
ql=qr=1;
q[qr]=s;
d[s]=0;
inq[s]=true;
while (ql<=qr) {
L u=q[ql++];
F(u) if (d[v]>d[u]+w) {
d[v]=d[u]+w;
if (!inq[v]) inq[v]=true,q[++qr]=v;
}
inq[u]=false;
}
}
L sum[maxn];
void check(L s) {
memset(inq,0,sizeof inq);
memset(sum,0,sizeof sum);
ql=qr=1;
q[qr]=s;
d[s]=0;
inq[s]=true;
while (ql<=qr) {
L u=q[ql++];
F(u) if (d[v]==d[u]+w) {
sum[v]++;
if (!inq[v]) inq[v]=true,q[++qr]=v;
}
}
}
int main() {
#ifndef ONLINE_JUDGE
freopen("test.in","r",stdin);
#endif
L n,m;
read(n),read(m);
for (L i=1;i<=m;++i) {
L u,v,w;
read(u),read(v),read(w);
add(u,v,w),add(v,u,w);
}
spfa(1);
check(1);
L ans=1;
for (L i=1;i<=n;++i) if (sum[i]) (ans*=sum[i])%=Q;
printf("%lld\n",ans);
}
小W计树的更多相关文章
- 【牛客】小w的魔术扑克 (并查集?? 树状数组)
题目描述 小w喜欢打牌,某天小w与dogenya在一起玩扑克牌,这种扑克牌的面值都在1到n,原本扑克牌只有一面,而小w手中的扑克牌是双面的魔术扑克(正反两面均有数字,可以随时进行切换),小w这个人就准 ...
- 【codevs2370】小机房的树 LCA 倍增
2370 小机房的树 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为0 ...
- CodeVs.2370 小机房的树 ( LCA 倍增 最近公共祖先)
CodeVs.2370 小机房的树 ( LCA 倍增 最近公共祖先) 题意分析 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上.有一天, ...
- bzoj2441【中山市选】小W的问题
题目描述 有一天,小W找了一个笛卡尔坐标系,并在上面选取了N个整点.他发现通过这些整点能够画出很多个“W”出来.具体来说,对于五个不同的点(x1, y1), (x2, y2), (x3, y3), ( ...
- LCA(倍增在线算法) codevs 2370 小机房的树
codevs 2370 小机房的树 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 小机房有棵焕狗种的树,树上有N个节点, ...
- bzoj 2441 [中山市选2011]小W的问题
bzoj 2441 [中山市选2011]小W的问题 Description 有一天,小W找了一个笛卡尔坐标系,并在上面选取了N个整点.他发现通过这些整点能够画出很多个"W"出来.具 ...
- codevs2370 小机房的树 x
2370 小机房的树 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号 ...
- 【NOIP2017模拟6.25】小W的动漫
题目 小W最近迷上了日本动漫,每天都有无数部动漫的更新等着他去看,所以他必须将所有的动漫排个顺序,当然,虽然有无数部动漫,但除了1号动漫,每部动漫都有且仅有一部动漫是它的前传(父亲),也就是说,所有的 ...
- 【JZOJ6389】小w学图论
description 小w这学期选了门图论课,他在学习点着色的知识.他现在得到了一张无向图,并希望在这张图上使用最多n种颜色给每个节点染色,使得任意一条边关联的两个节点颜色不同. 小w获得一张n个节 ...
随机推荐
- 循环字典进行操作时出现:RuntimeError: dictionary changed size during iteration的解决方案
在做对员工信息增删改查这个作业时,有一个需求是通过用户输入的id删除用户信息.我把用户信息从文件提取出来储存在了字典里,其中key是用户id,value是用户的其他信息.在循环字典的时候,当用户id和 ...
- zoj 4054
#define ll long long ; int t; ll ans,tmp; char s[N]; int main() { scanf("%d",&t); whil ...
- Java监听器Listener使用说明
转载:http://blog.csdn.net/meng2602956882/article/details/13511587 1.什么是Java监听器 监听器也叫Listener,是Servlet的 ...
- hbase问题总结
一.客户端访问hbase时出现no further information 使用java api访问hbase时,一直连不上,查看日志发现以下错误: java.net.ConnectException ...
- install redis and used in golang on ubuntu 14.04
$ wget http://download.redis.io/releases/redis-3.0.3.tar.gz$ tar xzf redis-3.0.3.tar.gz$ cd redis-3. ...
- POJ - 1321 深度优先搜索入门
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> us ...
- 03011_HttpServletRequest
1.HttpServletRequest概述 (1)我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代 ...
- 02-python进阶-文件操作
新建一个文件 内容是从 0-9的整数 #coding:utf-8 f = open('1.txt','w') #r 只读 w 可写 a追加 for i in range(0,10): f.write( ...
- C# TypeDescriptor获取类型转换器,实现泛型转换
需求背景 平时的coding过程中,经常性遇到string类型转换成其他的基本类型,如 int double bool等,那我们正常的方式就是下面的方式进行类型转换 int.Parse("1 ...
- 实用jstl实现未登录时不能绕过登录界面的效果
package com.filter; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; ...