一道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 //////////////// ... 
随机推荐
- Timer类的schedule和scheduleAtFixedRate 简单应用
			Timer类可以用作定时任务,主要的方法有schedule和scheduleAtFixedRate. schedule(TimerTask task, Date time) 安排在指定的时间执行指定的 ... 
- AC 自动机 模板
			简单版 #include <iostream> #include <cstdio> #include <algorithm> #include <cstrin ... 
- CentOS上安装Git服务器
			1.安装Git 打开控制台,执行以下命令进行安装 $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel ... 
- ECMAScript 6 笔记(一)
			一.ECMAScript 6简介 1996年11月,JavaScript的创造者Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这种语言能够成为国际标准.次年,ECM ... 
- Ubuntu下的Samba服务器配置
			一. samba的安装: sudo apt-get insall samba 二. 创建共享目录: mkdir /home/phinecos/share sodu chmod 777 /home/ge ... 
- 项目中引入composer
			众所周知,composer可以自定义加载插件库和依赖,它也是用PHP写的,怎样在自己的项目中引入并使用composer呢?. 1.新建一个项目,在项目的根目录创建composer.json文件,用过一 ... 
- 洛谷P3369 【模板】普通平衡树(Treap/SBT)
			洛谷P3369 [模板]普通平衡树(Treap/SBT) 平衡树,一种其妙的数据结构 题目传送门 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除 ... 
- Factorial数列的几种实现方式
			斐波那契数列很常见,实现的方法主要有递归,for,栈等,下面给出代码 import java.math.BigInteger; import java.util.Scanner; import jav ... 
- Deep Learning for Information Retrieval
			最近关注了一些Deep Learning在Information Retrieval领域的应用,得益于Deep Model在对文本的表达上展现的优势(比如RNN和CNN),我相信在IR的领域引入Dee ... 
- 基于微软企业库的AOP组件(含源码)
			软件开发,离不开对日志的操作.日志可以帮助我们查找和检测问题,比较传统的日志是在方法执行前或后,手动调用日志代码保存.但自从AOP出现后,我们就可以避免这种繁琐但又必须要实现的方式.本文是在微软企业库 ... 
