题意

有一个n个节点的无向图,结点编号从0-n-1,每条边的长度时1to9的一个正整数。现在要删除一些边(或者不删),使得到的新图满足下面两个要求。

1.
新图是一颗树有n-1条边
2.
对于每个结点v(0ton-1)从0到v的距离要等于原图上从0到v的最短路

现在计算有多少种不同的图满足上面两个条件

分析

统计每个点可以到达最短路的入度值,然后相乘。这个题因为spfa写错了调了老久···

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <queue> using namespace std;
const int INF=;
const int maxn=;
const int MOD=;
int n;
char g[maxn][maxn];
int G[maxn][maxn];
int d[maxn],vis[maxn];
long long in[maxn];
long long ans;
void spfa(){
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++)d[i]=INF;
queue<int>q;
q.push();vis[]=;
d[]=;
while(!q.empty()){
int u=q.front();q.pop();
vis[u]=;
for(int i=;i<n;i++){
if(G[u][i]){
if(d[i]>=d[u]+G[u][i]){
d[i]=d[u]+G[u][i];
if(!vis[i]){
vis[i]=;
q.push(i);
}
}
}
}
}
return;
}
int main(){
while(scanf("%d",&n)!=EOF){
memset(G,,sizeof(G));
for(int i=;i<n;i++){
for(int j=;j<n;j++){
scanf(" %c",&g[i][j]);
}
}
for(int i=;i<n;i++){
for(int j=;j<n;j++){
G[i][j]=g[i][j]-'';
}
}
spfa();
memset(in,,sizeof(in));
for(int i=;i<n;i++){
for(int j=;j<n;j++){
if(i!=j){
if(G[i][j]&&d[j]==d[i]+G[i][j]){
in[j]++;
}
}
}
}
ans=;
for(int i=;i<n;i++){
if(in[i])
ans=(ans%MOD*in[i]%MOD)%MOD;
}
printf("%lld\n",ans);
}
return ;
}

【HDU6026】Deleting Edges的更多相关文章

  1. 【CF576E】Painting Edges 线段树按时间分治+并查集

    [CF576E]Painting Edges 题意:给你一张n个点,m条边的无向图,每条边是k种颜色中的一种,满足所有颜色相同的边内部形成一个二分图.有q个询问,每次询问给出a,b代表将编号为a的边染 ...

  2. 【Codeforces576E_CF576E】Painting Edges(可撤销并查集+线段树分治)

    题目 CF576E 分析: 从前天早上肝到明天早上qwq其实颓了一上午MC ,自己瞎yy然后1A,写篇博客庆祝一下. 首先做这题之前推荐一道很相似的题:[BZOJ4025]二分图(可撤销并查集+线段树 ...

  3. 【LeetCode】Longest Word in Dictionary through Deleting 解题报告

    [LeetCode]Longest Word in Dictionary through Deleting 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode. ...

  4. HDU6026 Deleting Edges 2017-05-07 19:30 38人阅读 评论(0) 收藏

    Deleting Edges                                                                                  Time ...

  5. 【433】COMP9024 复习

    目录: 01. Week01 - Lec02 - Revision and setting the scene 02. Week02 - Lec01 - Data structures - memor ...

  6. Python高手之路【三】python基础之函数

    基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...

  7. 【BZOJ3940】【BZOJ3942】[Usaco2015 Feb]Censoring AC自动机/KMP/hash+栈

    [BZOJ3942][Usaco2015 Feb]Censoring Description Farmer John has purchased a subscription to Good Hoov ...

  8. 【转】jqGrid 各种参数 详解

      [原文]http://www.cnblogs.com/younggun/archive/2012/08/27/2657922.htmljqGrid 各种参数 详解 JQGrid JQGrid是一个 ...

  9. 【POJ3237】Tree 树链剖分+线段树

    [POJ3237]Tree Description You are given a tree with N nodes. The tree's nodes are numbered 1 through ...

随机推荐

  1. Windows10使用Chocolatey安装mysql之后无法使用的解决办法

    问题背景:使用了一台新的虚拟机,并且安装了Chocolatey作为Windows的包管理器,之后安装mysql 那么问题发生了,使用mysql命令根本没有任何反应,也不报错,但是安装的时候是提示安装成 ...

  2. Golang调用windows下的dll动态库中的函数

    Golang调用windows下的dll动态库中的函数 使用syscall调用. package main import ( "fmt" "syscall" & ...

  3. Android开源框架-Annotation框架(以ViewMapping注解为例)

    Annotation 分类 1 标准 Annotation 包括Override, Deprecated, SuppressWarnings,标准 Annotation 是指 Java 自带的几个 A ...

  4. ACM学习历程—51NOD 1412 AVL树的种类(递推)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1770 这是这次BSG白山极客挑战赛的B题.设p(i, j)表示节点个数为 ...

  5. C语言 产生随机数

    rand()函数 #include <stdlib.h> int rand(void); rand()是根据某个种子,以特定的算法,计算出一系列数的函数.返回的数在0和RAND_MAX之间 ...

  6. 在DIV里面让图片居中

    .content.itemDiv{ display: table-cell;width: 171px;height: 133px;text-align: center; vertical-align: ...

  7. hive外表parquet文件

    外表关联parquet文件 1. 为什么关联了一次数据文件就不能二次被使用: 2. 为什么删除了employee,select还是可以而且有数据,1,2可能是一个问题   外表drop只是metada ...

  8. 洛谷 1514 (NOIp2010) 引水入城

    题目:https://www.luogu.org/problemnew/show/P1514 如果有解,一个第一行的格子能覆盖第n行的一定是一个连续的区间. 因为如果不连续,则有围住了一些第n行的格子 ...

  9. (转)Android高性能编程(1)--基础篇

    关于专题     本专题将深入研究Android的高性能编程方面,其中涉及到的内容会有Android内存优化,算法优化,Android的界面优化,Android指令级优化,以及Android应用内存占 ...

  10. 微信 unionid 获取 解密数据

    1.申请注册微信开放平台  open.weixin.qq.com 2.绑定公众号或者小程序到微信开放平台 3.微信公众号的话,使用微信网页授权获取 unionid https://mp.weixin. ...