最短路。

先建一个只包含最短路的有向无环图,每一个点选择任意一条入边即可生成一个树形图,那么树的种类就等于每个点的入度乘积。

#include <bits/stdc++.h>
using namespace std; const long long mod = 1e9+;
int n;
char s[][];
int dis[],f[];
int in[]; void spfa()
{
queue<int>Q;
for(int i=;i<n;i++) f[i]=,dis[i] = 0x7FFFFFFF;
dis[]=; Q.push(); f[]=; while(!Q.empty())
{
int h = Q.front(); Q.pop(); f[h]=;
for(int i=;i<n;i++)
{
int val = s[h][i]-'';
int to = i;
if(val==) continue;
if(dis[h]+val<dis[to])
{
dis[to] = dis[h]+val;
if(f[to]==)
{
f[to]=;
Q.push(to);
}
}
}
}
} int main()
{
while(~scanf("%d",&n))
{
for(int i=;i<n;i++) scanf("%s",s[i]);
spfa(); memset(in,,sizeof in);
for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
if(i==j) continue;
int val = s[i][j]-'';
if(val==) continue;
if(dis[i]+val == dis[j])
{
in[j]++;
}
}
} long long ans=; for(int i=;i<n;i++)
{
if(in[i]==) continue;
ans = ans* (long long)in[i]%mod;
} printf("%lld\n",ans); }
return ;
}

HDU 6026 Deleting Edges的更多相关文章

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

    Deleting Edges                                                                                  Time ...

  2. 2017中国大学生程序设计竞赛 - 女生专场 Deleting Edges(思维+最短路)

    Deleting Edges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  3. hdu6026 Deleting Edges(Dijkstra+思路)

    https://vjudge.net/problem/HDU-6026 我一直想不明白的是,它的乘法是如何保证n-1条边的.后来画了一张图大概能明白了. 结合最后的乘法二层循环的代码来看,当i=4的时 ...

  4. 【HDU6026】Deleting Edges

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

  5. hdu 4496 D-City(并查集)

    Problem Description Luxer is a really bad guy. He destroys everything he met. One day Luxer went to ...

  6. HDU 4496 D-City (并查集,水题)

    D-City Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Subm ...

  7. hdu 4496(并查集逆向添边)

    D-City Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Subm ...

  8. 2019的hdu暑假作业(欢迎纠错)

    1219 遍历计数. #include<bits/stdc++.h> #define QAQ 0 using namespace std; ]; ]; int main(){ )){ me ...

  9. hdu-4496-D-City

    D-City Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Subm ...

随机推荐

  1. HTTP、TCP、 UDP、 IP 、 Socket的关系

    TCP和UDP协议是传输协议,IP是网络层协议.传输协议和网络层协议主要解决数据如何在网络中传输,或者说TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准.TCP负责发现传输 ...

  2. [DeeplearningAI笔记]序列模型2.3-2.5余弦相似度/嵌入矩阵/学习词嵌入

    5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.3词嵌入的特性 properties of word embedding Mikolov T, Yih W T, Zwe ...

  3. Vue.js和angular.js区别

    Vue.js:易学 简单 指令以v.xxx 一片HTML代码配合json,在new出来Vue,js实例 个人维护项目 适用于移动端 应用超越了angular angular.js:上手难 指令以ng. ...

  4. 分治法:快速排序求第K极值

    标题其实就是nth_element函数的底层实现 nth_element(first, nth, last, compare) 求[first, last]这个区间中第n大小的元素 如果参数加入了co ...

  5. CS46 C 枚举二分

    给你n*2个数其中n个数是原数减去了X值的数.问你满足条件的X值和原来的n个数.注意X为正整数. X should be positive,没0的 思路很简单,一个数必定会对应一个数,那么枚举一个数和 ...

  6. 2015/9/22 Python基础(18):组合、派生和继承

    一个类被定义后,目标就是把它当成一个模块来使用,并把这些对象嵌入到你的代码中去,同其他数据类型及逻辑执行流混合使用.有两种方法可以在你的代码中利用类.第一种是组合,就是让不同的类混合并加入到其他类中, ...

  7. 【BZOJ】2049: [Sdoi2008]Cave 洞穴勘测 LCT

    [题意]给定n个点和m个操作,每次操作:1.连接2个点.2.断开2个点.3.查询2个点是否连通.m<=2*10^5. [算法]Link-Cut Tree [题解]LCT模板题,Link,Cut, ...

  8. matlab前景分割

    用最简单的差分法实现了一下前景分割.使用的mall数据集. 思路是这样的:首先设定一个队列的长度,若读取的图片张数少于队列长度则以当前读取到的图片做平均.否则则以队列中的图片做平均. 这样之后和当前图 ...

  9. 2017ACM暑期多校联合训练 - Team 8 1006 HDU 6138 Fleet of the Eternal Throne (字符串处理 AC自动机)

    题目链接 Problem Description The Eternal Fleet was built many centuries ago before the time of Valkorion ...

  10. [\u4e00-\u9fa5] //匹配中文字符

     [\u4e00-\u9fa5] //匹配中文字符 ^[1-9]\d*$    //匹配正整数^[A-Za-z]+$   //匹配由26个英文字母组成的字符串^[A-Z]+$      //匹配由26 ...