CF #349 div1 B. World Tour
题目链接:http://codeforces.com/problemset/problem/666/B
大意是给一张有向图,选取四个点,使得走这四个点,任意两个点之间走最短路,总距离最长。
3000个点直接floyd肯定不行,但是注意到任意每条路距离都是1,其实可以枚举所有源点作bfs,求出距离数组。
然后对于每个点求出以这个点为入点和出点距离最大的3个点。再根据这个信息,枚举四个点中的中间两个,再枚举这两个点距离他们最远的那3*3种情况,判断是否有重复,没有重复的话,更新答案。
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdio>
#include <math.h>
#include <queue>
#include <stack>
#include <map>
#include <set>
using namespace std; const int N=; vector<int>edge[N];
int dis[N][N];
int n;
void bfs(int s) {
queue< pair<int,int> >que;
que.push(make_pair(s,));
dis[s][s]=;
while (!que.empty()) {
pair<int,int> now=que.front();
que.pop();
int u=now.first,d=now.second;
for (int i=;i<edge[u].size();i++) {
int v=edge[u][i];
if (dis[s][v]>=) continue;
dis[s][v]=d+;
que.push(make_pair(v,d+));
}
}
}
pair<int,int> in[N][],out[N][];
void upd(pair<int,int> x,pair<int,int> *y) {
for (int i=;i<;i++) {
if (x>y[i]) {
for (int j=;j>i;j--) {
y[j]=y[j-];
}
y[i]=x;
break;
}
}
}
void solve() {
memset(dis,-,sizeof dis);
for (int i=;i<=n;i++){
bfs(i);
for (int j=;j<;j++) {
in[i][j]=make_pair(-,-);
out[i][j]=make_pair(-,-);
}
}
for (int i=;i<=n;i++) {
for (int j=;j<=n;j++) {
if (i==j) continue;
if (dis[i][j]==-) continue;
upd(make_pair(dis[i][j],i),in[j]);
upd(make_pair(dis[i][j],j),out[i]);
}
}
int best=;
int a=-,b=-,c=-,d=-;
for (int i=;i<=n;i++) {
for (int j=;j<=n;j++) {
if (i==j) continue;
if (dis[i][j]==-) continue;
for (int p=;p<;p++) {
if (in[i][p].first==-) continue;
int ii=in[i][p].second;
if (ii==j) continue;
for (int q=;q<;q++) {
if (out[j][q].first==-) continue;
int jj=out[j][q].second;
if (jj==i||jj==ii) continue; int tot=dis[ii][i]+dis[i][j]+dis[j][jj];
if (tot>best) {
best=tot;
a=ii;b=i;c=j;d=jj;
}
}
}
}
}
printf("%d %d %d %d\n",a,b,c,d);
}
int main () {
int m;
scanf("%d %d",&n,&m);
for (int i=;i<=m;i++) {
int u,v;
scanf("%d %d",&u,&v);
edge[u].push_back(v);
}
solve();
return ;
}
CF #349 div1 B. World Tour的更多相关文章
- CF#462 div1 D:A Creative Cutout
CF#462 div1 D:A Creative Cutout 题目大意: 原网址戳我! 题目大意: 在网格上任选一个点作为圆中心,然后以其为圆心画\(m\)个圆. 其中第\(k\)个圆的半径为\(\ ...
- CF#345 (Div1)
论蒟蒻如何被cf虐 以下是身败名裂后的题解菌=========== Div1 A.Watchmen 有n个点,每个点有一个坐标.求曼哈顿距离=欧几里得距离的点对数量. 只需要统计x或y一样的点对数量. ...
- CF #356 div1 A. Bear and Prime 100
题目链接:http://codeforces.com/contest/679/problem/A CF有史以来第一次出现交互式的题目,大致意思为选择2到100中某一个数字作为隐藏数,你可以询问最多20 ...
- CF #228 div1 B. Fox and Minimal path
题目链接:http://codeforces.com/problemset/problem/388/B 大意是用不超过1000个点构造一张边权为1的无向图,使得点1到点2的最短路的个数为给定值k,其中 ...
- CF #335 div1 A. Sorting Railway Cars
题目链接:http://codeforces.com/contest/605/problem/A 大意是对一个排列进行排序,每一次操作可以将一个数字从原来位置抽出放到开头或结尾,问最少需要操作多少次可 ...
- CF #345 Div1 D Zip-line
题目链接:http://codeforces.com/contest/650/problem/D 大意是给一个数组,若干询问,每一次把一个数字改为另一个数字,问当前数组最长上升子序列,询问之间是独立的 ...
- CF #299 div1 B. Tavas and Malekas KMP-next数组
题目链接:http://codeforces.com/contest/536/problem/B 一个原始字符串,一个未知字符串,每一次从pos[i]开始覆盖未知字符串,问最后字符串的形式,以及判断过 ...
- CF #93 div1 B. Password KMP/Z
题目链接:http://codeforces.com/problemset/problem/126/B 大意:给一个字符串,问最长的既是前缀又是后缀又是中缀(这里指在内部出现)的子串. 我自己的做法是 ...
- CF #284 div1 D. Traffic Jams in the Land 线段树
大意是有n段路,每一段路有个值a,通过每一端路需要1s,如果通过这一段路时刻t为a的倍数,则需要等待1s再走,也就是需要2s通过. 比较头疼的就是相邻两个数之间会因为数字不同制约,一开始想a的范围是2 ...
随机推荐
- SQLServer索引循环删除
declare qc_cursor cursor SCROLL OPTIMISTIC Forselect siteName from tb_vhostcheckopen qc_cursordeclar ...
- maven新建的项目,不自动引入依赖包
1.检查repository的目录是不是纯英文. 2.重新下载一次repository. 如果解决了问题,那么原因就是前面在加载repository的时候,因为断网导致了下载的包有误,无法被ecl ...
- [.net 面向对象程序设计深入](24)实战设计模式——策略模式(行为型)
[.net 面向对象程序设计深入](24)实战设计模式——策略模式(行为型) 1,策略模式定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它 ...
- 1622: [Usaco2008 Open]Word Power 名字的能量
1622: [Usaco2008 Open]Word Power 名字的能量 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 370 Solved: 18 ...
- solr query的post方式
众所周知, solr 是通过 GET 方式来进行查询的. 那么solr 是否支持POST 方式进行查询呢? 通过一番调研,发现SOLR其实是支持POST方式进行查询的. 方式为: 使用form 方式提 ...
- mybatis只能模糊查询英文不能查询中文
解决方法:修改配置文件,最简单的完美修改方法,修改mysql的my.cnf文件中的字符集键值(注意配置的字段细节): 1.在[client]字段里加入default-character-set=utf ...
- NIO(一、概述)
离上次发布文章已过去好几个月,说好的积累和分享都烟消云散.似乎忙碌从未终止过,加班成为常态,甚至阅读都需要更琐碎的时间. 目录 NIO(一.概述) NIO(二.Buffer) 概述 JavaNIO(n ...
- web简易MP3播放插件 Aplayer篇章一
效果如图所示: 写入初始代码,定义一个id唯一的div player1 <!DOCTYPE html> <html> <head> <meta charset ...
- 源码分析——从AIDL的使用开始理解Binder进程间通信的流程
源码分析——从AIDL的使用开始理解Binder进程间通信的流程 Binder通信是Android系统架构的基础.本文尝试从AIDL的使用开始理解系统的Binder通信. 0x00 一个AIDL的例子 ...
- C#文件上传类,文件流,字节数组等
using System;using System.IO;using System.Web;using System.Web.UI.WebControls; namespace DotNet.Util ...