题意:问给定的一张图中,相距最远的两个点的距离为多少。
解法:跟求树的直径差不多,从1 开始bfs,得到一个最远的点,然后再从该点bfs一遍,得到的最长距离即为答案。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <map>
using namespace std;
#define N 100007 map<string,int> mp;
vector<int> G[];
int vis[],n,m,Maxdis,Maxtag;
struct node{
int dis,u;
}; void dfs(int u)
{
vis[u] = ;
for(int i=;i<G[u].size();i++)
{
int v = G[u][i];
if(!vis[v]) dfs(v);
}
} void bfs(int u)
{
queue<node> que;
memset(vis,,sizeof(vis));
node now;
now.dis = ;
now.u = u;
que.push(now);
vis[u] = ;
while(!que.empty())
{
int SZ = que.size();
while(SZ--)
{
node tmp = que.front();
que.pop();
int dis = tmp.dis;
int u = tmp.u;
if(dis > Maxdis)
{
Maxdis = dis;
Maxtag = u;
}
for(int i=;i<G[u].size();i++)
{
int v = G[u][i];
if(!vis[v])
{
now.u = v;
now.dis = dis+;
vis[v] = ;
que.push(now);
}
}
}
}
} int main()
{
int i,j;
string S;
while(scanf("%d",&n)!=EOF && n)
{
mp.clear();
for(i=;i<=n;i++)
{
cin>>S;
mp[S] = i;
G[i].clear();
}
scanf("%d",&m);
string A,B;
for(i=;i<=m;i++)
{
cin>>A>>B;
int a = mp[A], b = mp[B];
G[a].push_back(b);
G[b].push_back(a);
}
memset(vis,,sizeof(vis));
dfs();
int Link = ;
for(i=;i<=n;i++)
if(!vis[i]) Link = ;
if(!Link)
{
puts("-1");
continue;
}
Maxdis = , Maxtag = -;
bfs();
int S = Maxtag;
Maxdis = , Maxtag = -;
bfs(S);
printf("%d\n",Maxdis);
}
return ;
}

HDU 4460 Friend Chains --BFS的更多相关文章

  1. HDU 4460 Friend Chains (BFS,最长路径)

    题意:给定 n 个人,和关系,问你这个朋友圈里任意两者之间最短的距离是多少. 析:很明显的一个BFS,只要去找最长距离就好.如果不能全找到,就是-1. 代码如下: #pragma comment(li ...

  2. HDU 4460 Friend Chains(map + spfa)

    Friend Chains Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total ...

  3. HDU 4460 Friend Chains

    Problem Description For a group of people, there is an idea that everyone is equals to or less than ...

  4. HDU 1428 漫步校园 (BFS+优先队列+记忆化搜索)

    题目地址:HDU 1428 先用BFS+优先队列求出全部点到机房的最短距离.然后用记忆化搜索去搜. 代码例如以下: #include <iostream> #include <str ...

  5. hdu 4460 第37届ACM/ICPC杭州赛区H题 STL+bfs

    题意:一些小伙伴之间有朋友关系,比如a和b是朋友,b和c是朋友,a和c不是朋友,则a和c之间存在朋友链,且大小为2,给出一些关系,求出这些关系中最大的链是多少? 求最短路的最大距离 #include& ...

  6. hdu 2102 A计划-bfs

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  7. HDU 1072(记忆化BFS)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1072 题目大意:走迷宫.走到装置点重置时间,到达任一点时的时间不能为0,可以走重复路,求出迷宫最短时 ...

  8. HDU 2364 (记忆化BFS搜索)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2364 题目大意:走迷宫.从某个方向进入某点,优先走左或是右.如果左右都走不通,再考虑向前.绝对不能往 ...

  9. HDU 2579 (记忆化BFS搜索)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2579 题目大意:走迷宫.对于障碍点,只有当前(dep+1)%k才能走,问最少时间. 解题思路: 只有 ...

随机推荐

  1. IIS在默认情况并不支持对PUT和DELETE请求的支持

    IIS在默认情况并不支持对PUT和DELETE请求的支持: IIS拒绝PUT和DELETE请求是由默认注册的一个名为:“WebDAVModule”的自定义HttpModule导致的.WebDAV的全称 ...

  2. H5调用Android播放视频

    webView.loadUrl("http://10.0.2.2:8080/assets/RealNetJSCallJavaActivity.htm"); js调用的Java文件中 ...

  3. spring编程式刷新/重新加载applicationcontext/dispatchservlet(正确版)

    有些时候,尤其是在开发应用框架的时候,由于某些原因无法或者很难重启tomcat或者reload应用,但是配置又需要动态生效,这个时候通常希望通过reload spring applicationcon ...

  4. C++ Const(常类型)的作用总结

    C++ Const的作用总结 面试或者工作中,我们经常遇到const修饰符定义的变量,函数和对象等.那么const的作用具体是什么,有哪些.今天自己好好的总结了一下,记录下来方便自己以后时间久了不记得 ...

  5. C++ Static(静态成员)的作用总结

    Static是C++中一个常见的关键字,它被用来控制变量的存储方式和可见性. 在类定义中,它的成员(包括数据成员和成员函数)可以用关键字static申明为静态成员.静态成员的特性是不管这个类创建了多少 ...

  6. 如何rename sqlserver database

    Problem Sometimes there is a need to change the name of your database whether this is because the or ...

  7. SharePoint 2013 中自定义WCF服务

    在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...

  8. SharePoint 2010 文档管理系列

    前言,这是自己第一次写一个系列的文档,本来想使用SharePoint 2013版本,但是碍于SharePoint 2013对于硬件要求过高,自己的笔记本无法承受,所以退而求其次选择了在SharePoi ...

  9. 通用javascript方法

    //将序列化成json格式后日期(毫秒数)转成日期格式 YYYY-MM-DD HH:MI:SS function ChangeDateFormat(cellval, type) { var date ...

  10. Thread.CurrentPrincipal & HttpContext.Current.User

    据说要这样写才稳妥 // This principal will flow throughout the request.VoyagerPrincipal principal = new Voyage ...