Problem Description

终于有一天,王元姬用他的劫打上了最强王者。他号称,他从来不会在偶数段位停留,因为他的实力太强会跳段(这个13我给满分)。傲娇棠和翔妹觉得他的13装的都比勇哥哥好了,所以要打击他一下,就拿他最擅长的劫来出了一道题。
假设在瓦洛兰大路上有劫的影子一共n个,影子与影子之间共有m条路,路的长度为1.每两个影子之间有一个能量值,能量值为一个影子能到达另一个影子的最短路,如果不能到达,则说明这两个影子之间不存在能量值。
这时,姜天姬粗现了。他觉得这样还是太简单了。姜天姬说,我的皇子eq能切断一条路。这样请你再计算所有劫的影子的能量值之和。
对于每一条路,输出如果姜天姬切断这条路,剩余路中所有劫的影子的能量值之和。如果任意两个影子之间不存在能量值,则输出“无形装13,最为致命”.

Input

多组测试用例,读到文件结束为止。
每组用例第一行有两个数,n,m,n代表劫共有n个影子,m代表共有m条路。
接下来m行有u,v两个数,表示路由第u个影子通道第v个影子。
2<=n,m<=60

Output

对于每组用例,输出m行。
第i行代表如果姜天姬切断第i条边,那么劫的所有影子的能量和值是多少,如果有任意两个劫的影子的能量和不存在,输出“无形装13,最为致命”。(最为致命前面的逗号为中文逗号)
这题主要问题在于floyd会超时。所以必须得使用类似的bfs来写
另外有个坑点就是只要有两个点不连接就是说明答案是0
#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与邻接表应用题的更多相关文章

  1. 图的DFS和BFS(邻接表)

    用C++实现图的DFS和BFS(邻接表) 概述   图的储存方式有邻接矩阵和邻接表储存两种.由于邻接表的实现需要用到抽象数据结构里的链表,故稍微麻烦一些.C++自带的STL可以方便的实现List,使算 ...

  2. 数据结构之 图论---bfs(邻接表)

    数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索( ...

  3. 图的bfs遍历模板(邻接矩阵存储和邻接表存储)

    bfs遍历图模板伪代码: bfs(u){ //遍历u所在的连通块 queue q; //将u入队 inq[u] = true; while (q非空){ //取出q的队首元素u进行访问 for (从u ...

  4. ACM/ICPC 之 数据结构-邻接表+BFS(TSH OJ-无线广播Broadcast)

    这道题中若能够构成互不干扰的区域,其构成的图其实就是汉密尔顿路(Hamilton road),因此如果能够观察出来可以直接转化为汉密尔顿路的存在性证明,即便不能观察,我相信ACMer也能转化为BFS问 ...

  5. QDUOJ 生化危机 邻接表存图+BFS

    生化危机 发布时间: 2015年10月10日 18:05   时间限制: 1000ms   内存限制: 256M 描述 X博士想造福人类, 研发一种可以再生肢体的药物, 可是很不幸......研究失败 ...

  6. 数据结构 《2》----基于邻接表表示的图的实现 DFS(递归和非递归), BFS

    图通常有两种表示方法: 邻接矩阵 和 邻接表 对于稀疏的图,邻接表表示能够极大地节省空间. 以下是图的数据结构的主要部分: struct Vertex{ ElementType element; // ...

  7. 数据结构学习笔记05图 (邻接矩阵 邻接表-->BFS DFS、最短路径)

    数据结构之图 图(Graph) 包含 一组顶点:通常用V (Vertex) 表示顶点集合 一组边:通常用E (Edge) 表示边的集合 边是顶点对:(v, w) ∈E ,其中v, w ∈ V 有向边& ...

  8. 邻接表实现Dijkstra算法以及DFS与BFS算法

    //============================================================================ // Name : ListDijkstr ...

  9. 数据结构(11) -- 邻接表存储图的DFS和BFS

    /////////////////////////////////////////////////////////////// //图的邻接表表示法以及DFS和BFS //////////////// ...

随机推荐

  1. UOJ 241. 【UR #16】破坏发射台 [矩阵乘法]

    UOJ 241. [UR #16]破坏发射台 题意:长度为 n 的环,每个点染色,有 m 种颜色,要求相邻相对不能同色,求方案数.(定义两个点相对为去掉这两个点后环能被分成相同大小的两段) 只想到一个 ...

  2. qt 移植到开发板

    一.准备工作: 1.QT应用程序 2.工具链--->交叉工具链一安装,就会有标准的c库 3.扩展的第三方库(ARM)()触摸屏库(tslib.tar.gz) 4.QT库 二.使用交叉工具链编译t ...

  3. Netty ByteBuf梳理

    我们知道,网络数据的基本单位总是字节.Java NIO提供了ByteBuffer作为它的字节容器,但是这个类使用起来过于复杂,而且也有些繁琐. Netty的ByteBuffer替代品是ByteBuf, ...

  4. springmvc log4j 配置

    web.xml 增加 <context-param> <param-name>log4jConfigLocation</param-name> <param- ...

  5. 【JavaWeb】DbUtils入门之QueryRunner

    DbUtils简介 根据官网的介绍,DbUtils是一种 JDBC Utility Component (翻译过来大概就是:JDBC实用部件),故名思意,和数据库操作有关 官网上的简介也称之为 JDB ...

  6. ng组件通讯的几种方式

    通过输入型绑定把数据从父组件传到子组件. 如<app-hero-child *ngFor="let hero of heroes"  [hero]="hero&qu ...

  7. keras初涉笔记【一】

    安装keras依赖的库 sudo pip install numpy sudo pip install scipy sudo pip installl pyyaml sudo pipi install ...

  8. Angular Universal(统一平台)笔记

    angular官网高级文档AngularUniversal部分的翻译总结,这东西在angular4开始正式被官方支持了,目前其实支持的服务器端还没有很多,但好歹包括了node和DotNetCore,算 ...

  9. python3.6+django2.0 一小时学会开发一套学员管理系统demo

    1.在pycharm中新建project demo1 添加app01 点击create按钮完成新建 2.在demo项目目录下新建目录static,并在settings.py中追加代码: STATICF ...

  10. hdu2089 不要62--经典数位DP

    一道十分经典的数位DP的题目. dp[i][j]表示最高位是数字i,连同最高位在内共有j位.注意边界的初始化. 接下来就是区间划分,特殊情况处理.....对了,如果不知道自己的方法是否正确,可以写一个 ...