博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 4460 Friend Chains ( BFS )
阅读量:5034 次
发布时间:2019-06-12

本文共 2469 字,大约阅读时间需要 8 分钟。

每个点求一次最短路,在最短路中找最长的。

用邻接表存边,尽量不要用STL,很容易超时。

#include 
#include
#include
#include
using namespace std;const int MAXN = 1010;const int INF = 1 << 22;struct node{ int v, next; node() { } node( int v, int next ):v(v), next(next) { }};struct Dijkstra{ int n, m; int head[MAXN]; node edges[MAXN*22]; bool done[MAXN]; int d[MAXN]; void init( int n ) { this->n = n; this->m = 0; for ( int i = 0; i <= n; ++i ) head[i] = -1; return; } void AddEdge( int from, int to ) { edges[m].v = to; edges[m].next = head[from]; head[from] = m++; return; } void dijkstra( int s ) { int Q[MAXN*22]; for ( int i = 0; i <= n; ++i ) d[i] = INF; d[s] = 0; memset( done, false, sizeof(done) ); int front = 0; int tail = 0; Q[tail++] = s; while ( front < tail ) { int u = Q[front++]; if ( done[u] ) continue; done[u] = true; for ( int i = head[u]; i != -1; i = edges[i].next ) { int v = edges[i].v; if ( d[v] > d[u] + 1 ) { d[v] = d[u] + 1; Q[tail++] = v; } } //printf( "front=%d tail=%d\n", front, tail ); } return; }};int N, edgeN;Dijkstra slv;char name[MAXN][14];int GetNum( char *s ){ for ( int i = 1; i <= N; ++i ) { if ( !strcmp( s, name[i] ) ) return i; } return 0;}int main(){ while ( scanf("%d", &N ) == 1 && N ) { for ( int i = 1; i <= N; ++i ) scanf( "%s", name[i] ); scanf( "%d", &edgeN ); slv.init( N ); for ( int i = 0; i < edgeN; ++i ) { char a[14], b[14]; scanf( "%s%s", a, b ); int u = GetNum(a); int v = GetNum(b); slv.AddEdge( u, v ); slv.AddEdge( v, u ); } int ans = 0; for ( int i = 1; i <= N; ++i ) { slv.dijkstra( i ); for ( int j = i + 1; j <= N; ++j ) { ans = max( ans, slv.d[j] ); if ( ans >= INF ) break; } if ( ans >= INF ) break; } if ( ans >= INF ) puts("-1"); else printf( "%d\n", ans ); } return 0;}

 

转载于:https://www.cnblogs.com/GBRgbr/p/3361354.html

你可能感兴趣的文章
Java 8 中如何优雅的处理集合
查看>>
Oracle 体系结构之ORACLE物理结构
查看>>
ORA-12538: TNS: no such protocol adapter
查看>>
盒子模型
查看>>
局域网协议
查看>>
[HNOI2012]永无乡 线段树合并
查看>>
SqlServer之Convert 函数应用格式化日期(转)
查看>>
软件测试领域中的10个生存和发展技巧
查看>>
2017/09/15 ( 框架2)
查看>>
Centos下源码安装git
查看>>
gulp-rev-append md5版本号
查看>>
IO流之File类
查看>>
sql 基础语句
查看>>
CF717A Festival Organization(第一类斯特林数,斐波那契数列)
查看>>
oracle直接读写ms sqlserver数据库(二)配置透明网关
查看>>
控件发布:div2dropdownlist(div模拟dropdownlist控件)
查看>>
Oracle composite index column ordering
查看>>
ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表
查看>>
kaggle竞赛
查看>>
区块链入门教程
查看>>