题意

有一个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. Image Pyramid (二)

    上一篇文章里,我们介绍了图像金字塔的基本原理,就是一种分层次的下采样.这篇文章里我们简单介绍一下图像金字塔的一种应用,image blending.利用图像金字塔做 image blending,可以 ...

  2. linux下 /boot 分区空间不足及其衍生问题

    linux的/boot引导分区有时会提示空间不足的问题,虽不影响系统的正常运行,但是人类天生对于未知的恐惧感总是影响心情的.而且在按安装其他软件的过程在中可能会出现以下问题: gzip: stdout ...

  3. 【常用软件】木木的常用软件点评(2)------VC程序员常用工具篇

     摘自:http://blog.csdn.net/liquanhai/article/details/7215045 木木的常用软件点评(2)------VC程序员常用工具篇 分类: VC++经验总结 ...

  4. ArcGIS Runtime SDK for WPF之测量距离和面积

    bu不多说,上代码 using System.Windows; using ESRI.ArcGIS.Client; using ESRI.ArcGIS.Client.Tasks; using ESRI ...

  5. linux上编写运行 dotnet core api

    安装 Ubuntu        dotnet core 跨平台已不再是梦,它带来的意义非凡,比如api接口可以在linux上编写及部署,也可以在windows上编写好,打包发布,然后copy到lin ...

  6. java中的修辞

    1.final修辞 final修辞变量分为两种:基本类型(byte,short,int,long,float,double,char,boolean)也是值类型,则一旦初始化,值不能改变:应用类型(S ...

  7. 转载pll工作模式解析

    PLL共有四种工作模式,只有理解了这四种工作模式的特点,才能在设计中选用恰当的模式,完成自己设计的预期功能.这四种工作模式分别是普通模式(Normal Mode).零延迟缓冲模式(Zero Delay ...

  8. Tornado服务端基本的配置文件(Python)

    web_set = { # -------一般设置-------- 'debug': True, 'port': 8836, 'autoreload': True, 'ui_modules': {}, ...

  9. JMeter使用经历

    JMeter是Apache大树下的又一个果实,是一个压力测试工具,因为使用方便又开源免费,也被用来做功能测试.项目里也是拿JMeter来做功能性的接口自动化测试.这里大概说明下怎么用. 首先还是先下载 ...

  10. jvm是怎样调用方法的

    jvm内部有五种调用方法的指令 invokeinterface 用以调用接口方法,在运行时搜索一个实现了这个接口方法的对象,找出适合的方法进行调用.(Invoke interface method) ...