一道bfs与邻接表应用题
Problem Description
假设在瓦洛兰大路上有劫的影子一共n个,影子与影子之间共有m条路,路的长度为1.每两个影子之间有一个能量值,能量值为一个影子能到达另一个影子的最短路,如果不能到达,则说明这两个影子之间不存在能量值。
这时,姜天姬粗现了。他觉得这样还是太简单了。姜天姬说,我的皇子eq能切断一条路。这样请你再计算所有劫的影子的能量值之和。
对于每一条路,输出如果姜天姬切断这条路,剩余路中所有劫的影子的能量值之和。如果任意两个影子之间不存在能量值,则输出“无形装13,最为致命”.
Input
每组用例第一行有两个数,n,m,n代表劫共有n个影子,m代表共有m条路。
接下来m行有u,v两个数,表示路由第u个影子通道第v个影子。
2<=n,m<=60
Output
第i行代表如果姜天姬切断第i条边,那么劫的所有影子的能量和值是多少,如果有任意两个劫的影子的能量和不存在,输出“无形装13,最为致命”。(最为致命前面的逗号为中文逗号)
#include<cstdio>
#include<cstring>
int n,m,i,j,k,ans,tot,head,tail,x,y;
int base[505],pre[1005],vec[1005],nb[1005];
bool vis[505];
int dis[505],team[1005];
void add(int x,int y,int z)
{
vec[++tot]=y; pre[tot]=base[x]; base[x]=tot; nb[tot]=z;
}
void bfs(int s)
{
memset(dis,0,sizeof(dis));
memset(vis,0,sizeof(vis));
head=0; tail=1; team[1]=s; vis[s]=1;
while(head<tail)
{
head++;
int u=team[head];
for (int now=base[u];now;now=pre[now])
if (nb[now]!=k)
{
int v=vec[now];
if (!vis[v])
{
vis[v]=1;
tail++;
team[tail]=v;
dis[v]=dis[u]+1;
}
}
}
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
tot=0;
memset(base,0,sizeof(base));
for (i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
add(x,y,i);
add(y,x,i);
}
for (k=1;k<=m;k++)
{
bool no=0;
ans=0;
for (i=1;i<=n;i++)
{
bfs(i);
for (j=1;j<=n;j++)
if (j!=i)
{
if (dis[j]==0) no=1;
else ans+=dis[j];
}
if (no) break;
}
if (no) printf("无形装13,最为致命\n");
else printf("劫影子的所有总能量之和:%d\n",ans/2);
}
}
}
一道bfs与邻接表应用题的更多相关文章
- 图的DFS和BFS(邻接表)
用C++实现图的DFS和BFS(邻接表) 概述 图的储存方式有邻接矩阵和邻接表储存两种.由于邻接表的实现需要用到抽象数据结构里的链表,故稍微麻烦一些.C++自带的STL可以方便的实现List,使算 ...
- 数据结构之 图论---bfs(邻接表)
数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索( ...
- 图的bfs遍历模板(邻接矩阵存储和邻接表存储)
bfs遍历图模板伪代码: bfs(u){ //遍历u所在的连通块 queue q; //将u入队 inq[u] = true; while (q非空){ //取出q的队首元素u进行访问 for (从u ...
- ACM/ICPC 之 数据结构-邻接表+BFS(TSH OJ-无线广播Broadcast)
这道题中若能够构成互不干扰的区域,其构成的图其实就是汉密尔顿路(Hamilton road),因此如果能够观察出来可以直接转化为汉密尔顿路的存在性证明,即便不能观察,我相信ACMer也能转化为BFS问 ...
- QDUOJ 生化危机 邻接表存图+BFS
生化危机 发布时间: 2015年10月10日 18:05 时间限制: 1000ms 内存限制: 256M 描述 X博士想造福人类, 研发一种可以再生肢体的药物, 可是很不幸......研究失败 ...
- 数据结构 《2》----基于邻接表表示的图的实现 DFS(递归和非递归), BFS
图通常有两种表示方法: 邻接矩阵 和 邻接表 对于稀疏的图,邻接表表示能够极大地节省空间. 以下是图的数据结构的主要部分: struct Vertex{ ElementType element; // ...
- 数据结构学习笔记05图 (邻接矩阵 邻接表-->BFS DFS、最短路径)
数据结构之图 图(Graph) 包含 一组顶点:通常用V (Vertex) 表示顶点集合 一组边:通常用E (Edge) 表示边的集合 边是顶点对:(v, w) ∈E ,其中v, w ∈ V 有向边& ...
- 邻接表实现Dijkstra算法以及DFS与BFS算法
//============================================================================ // Name : ListDijkstr ...
- 数据结构(11) -- 邻接表存储图的DFS和BFS
/////////////////////////////////////////////////////////////// //图的邻接表表示法以及DFS和BFS //////////////// ...
随机推荐
- HDU [P3605] Escape
二分图多重匹配 改进版的匈牙利,加入了一个cnt数组作为找到增广路的标志 本题有一个重要的优化见注释 #include <iostream> #include <cstdio> ...
- Kolakoski序列产生器
/* 本程序说明: Kolakoski序列是一个仅由1和2组成的无限数列,是一种通过“自描述”来定义的数列. 他的前几项为1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1 ...
- Centos6.8安装zabbix-3.2.6
系统环境:Centos6.8 mini软件:zabbix-3.2.6 zabbix 服务端安装 安装yum 扩展源 rpm -ivh http://repo.webtatic.com/yum/el6/ ...
- iperf命令
iperf命令网络测试 iperf命令是一个网络性能测试工具.iperf可以测试TCP和UDP带宽质量.iperf可以测量最大TCP带宽,具有多种参数和UDP特性.iperf可以报告带宽,延迟抖动和数 ...
- mysql中的范式与范式——读<<高性能mysql>>笔记一
对于任何给定的数据库通常都有很多表示方法,从完全的范式化到完全的反范式化,以及两者的折中.在范式化的数据库中,每个事实数据会出现并且只出现一次.相反,在反范式化的数据库中,可能会存储在多个地方. 那什 ...
- 【学习笔记】Hibernate关联映射(Y2-1-6)
Hibernate关联映射 关联映射就是将关联关系映射到数据库里,在对象模型中就是一个或多个引用. 1.单向多对一关联 准备数据库 部门表和员工表 其中部门表有两列 部门编号和名称 员工表有三列 员工 ...
- 安装 LightGBM 包的过程
conda install cmake conda install gcc git clone --recursive https://github.com/Microsoft/LightGBM ; ...
- No new migrations found. Your system is up-to-date.处理
显然是migrations表中存储的相关操作记录了,删除就好了!!!
- CentOs下Mongodb的下载与安装
1.下载MongoDB(64位) http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.9.tgz tar zxvf mongodb-lin ...
- 《android开发艺术探索》读书笔记(一)--Activity的生命周期和启动模式
No1: 如果新Activity采用了透明主题,那么当前Activity不会回调onStop: No2: 新Activity启动之前,栈顶的Activity需要先onPause后,新Activity才 ...