Codeforces 667D World Tour【最短路+枚举】
垃圾csdn,累感不爱!
题目链接:
http://codeforces.com/contest/667/problem/D
题意:
在有向图中找到四个点,使得这些点之间的最短距离之和最大。
分析:
最简单的Bellman求最短路复杂度太高。可以对每个点进行一次bfs,获得所有连通的点之间的最短距离。
点数最多3000,枚举中间两个点\(i,j\),对于点\(i\)考虑反向边的最远距离,对于点\(j\)考虑正向边的最远距离。
由于题目说点不同,所以对于每个点我们保存前三个远的点并枚举求得最远距离即可。这样枚举下来时间复杂度\(O(n^2)\)。
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
const int maxn = 3e3 + 5, oo = 0x3f3f3f3f;
int d[maxn][maxn];
int n, m;
typedef pair<int, int>p;
vector<p>zz[maxn], rzz[maxn];
vector<int>G[maxn];
void bfs()
{
for(int i = 1; i <= n; i++){
queue<int>q;
q.push(i);
while(!q.empty()){
int u = q.front(); q.pop();
for(int j = 0; j <G[u].size(); j++){
int w = G[u][j];
if(d[i][w] != oo) continue;
d[i][w] = d[i][u] + 1;
q.push(w);
}
}
}
}
int main (void)
{
scanf("%d%d", &n, &m);
memset(d, 0x3f, sizeof(d));
for(int i = 1; i <= n; i++) d[i][i] = 0;
int u, v;
for(int i = 0; i < m; i++){
scanf("%d%d", &u, &v);
G[u].push_back(v);
}
bfs();
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
if(i == j) continue;
if(d[i][j] != oo) zz[i].push_back(p(d[i][j], j));
if(d[j][i] != oo) rzz[i].push_back(p(d[j][i], j));
}
sort(zz[i].begin(), zz[i].end());
sort(rzz[i].begin(), rzz[i].end());
}
int r1, r2, r3, r4;
int maxx = 0;
int res;
for(int i = 1; i <= n; i++){
int a = zz[i].size();
for(int j = 1; j <= n; j++){
int b = rzz[j].size();
if(i == j || d[j][i] == oo) continue;
for(int k= a - 1; k >= a - 3 && k >= 0; k--){
if(zz[i][k].second == j) continue;
for(int y = b - 1; y >= b - 3 && y >= 0; y--){
if(zz[i][k].second == rzz[j][y].second) continue;
if(rzz[j][y].second == i) continue;
res = d[j][i] + rzz[j][y].first + zz[i][k].first;
if(res > maxx){
maxx = res;
r1 = rzz[j][y].second, r2 = j, r3 = i, r4 = zz[i][k].second;
}
}
}
}
}
//cout<<maxx<<endl;
printf("%d %d %d %d\n", r1, r2, r3, r4);
}
Codeforces 667D World Tour【最短路+枚举】的更多相关文章
- Codeforces 667D World Tour 最短路
链接 Codeforces 667D World Tour 题意 给你一个有向稀疏图,3000个点,5000条边. 问选出4个点A,B,C,D 使得 A-B, B-C, C-D 的最短路之和最大. 思 ...
- hdu 1595 find the longest of the shortest【最短路枚举删边求删除每条边后的最短路,并从这些最短路中找出最长的那条】
find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others) Memory Limit: 32768/32768 ...
- POJ 1161 Walls(最短路+枚举)
POJ 1161 Walls(最短路+枚举) 题目背景 题目大意:题意是说有 n个小镇,他们两两之间可能存在一些墙(不是每两个都有),把整个二维平面分成多个区域,当然这些区域都是一些封闭的多边形(除了 ...
- CJOI 05新年好 (最短路+枚举)
CJOI 05新年好 (最短路+枚举) 重庆城里有n个车站,m条双向公路连接其中的某些车站.每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费 ...
- 2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018)- D. Delivery Delays -二分+最短路+枚举
2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018)- D. Delivery Delays -二分+最短路+枚举 ...
- Codeforces Round #349 (Div. 1) B. World Tour 最短路+暴力枚举
题目链接: http://www.codeforces.com/contest/666/problem/B 题意: 给你n个城市,m条单向边,求通过最短路径访问四个不同的点能获得的最大距离,答案输出一 ...
- codeforces 667D D. World Tour(最短路)
题目链接: D. World Tour time limit per test 5 seconds memory limit per test 512 megabytes input standard ...
- World Tour CodeForces - 667D (bfs最短路)
大意: 有向图, 求找4个不同的点ABCD, 使得d(A,B)+d(D,C)+d(C,A)最大
- Codeforces Round #349 (Div. 2) D. World Tour (最短路)
题目链接:http://codeforces.com/contest/667/problem/D 给你一个有向图,dis[i][j]表示i到j的最短路,让你求dis[u][i] + dis[i][j] ...
随机推荐
- Bootstrap历练实例:警告样式按钮
<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...
- Bootstrap历练实例:表单控件状态(焦点)
输入框焦点 当输入框 input 接收到 :focus 时,输入框的轮廓会被移除,同时应用 box-shadow. <!DOCTYPE html><html><head& ...
- shell脚本,awk实现行列转换
[root@localhost study]# cat file 张三 语文 张三 数学 李四 语文 李四 数学 王五 语文 王五 数学 王五 英语 怎么实现为下面的排序??? 语文 数学 语文 数学 ...
- ulimit 值超出允许范围导致无法登陆操作系统
在linux中,使用ulimit可以设置一些资源的使用限制. [root@root ~]# ulimit -a core file size (blocks, -c) unlimit ...
- bzoj5138 [Usaco2017 Dec]Push a Box
题目描述: bz luogu 题解: 暴力可以记录$AB$位置转移,这个时候状态是$n^4$的,无法接受. 考虑只记录$A$在$B$旁边时的状态,这个时候状态时$n^2$的. 所以说转移有两种,一种是 ...
- PyQt5(1)——QToolTip, QPushButton, QMessageBox, QDesktopWidget
#面向对象方法 import sys from PyQt5.QtWidgets import QApplication, QWidget, QToolTip, QPushButton, QMessag ...
- H.264 与 MPEG-4 压缩格式的变革
h.264 和 mpeg-4 的关系: h.264 /avc ( advanced video coding )标准,是 mpeg-4 的第 10 部分. mpeg-4的初衷是将dvd质量的图像码流从 ...
- Java-改变Class
改变一个Class对象的类型 package com.tj; public class MyClass2 { public static void main(String[] args) { Obje ...
- 编辑器sublime(转)摘自网络
一.下载和安装 Sublime Text2是一款开源的软件,不需要注册即可使用(虽然没有注册会有弹窗,但是基本不影响使用). 下载地址:http://www.sublimetext.com/,请自行根 ...
- UVA - 10591 Happy Number
Happy Number UVA - 10591 Let the sum of the square of the digits of a positive integer S0 be represe ...