Codeforces Round #349 (Div. 2) D. World Tour 【spfa+暴力枚举】
来源:互联网 发布:网络教育考试时间 编辑:程序博客网 时间:2024/05/17 21:35
/* ***********************************************Author :MaltubEmail :xiang578@foxmail.comBlog :htttp://www.xiang578.com************************************************ */#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>//#include <bits/stdc++.h>#define rep(i,a,n) for(int i=a;i<n;i++)#define per(i,a,n) for(int i=n-1;i>=a;i--)#define pb push_backusing namespace std;typedef vector<int> VI;typedef long long ll;const ll mod=1000000007;const int inf=0x3fffffff;const int N=3000+10;vector<int>g[N],gt[N];int n,m,dis[N][N];struct node{ int v,w;}p[N][10],pt[N][10];void spfa(int x){ int inq[N],u,v; queue<int>q; memset(inq,0,sizeof(inq)); for(int i=1;i<=n;i++) dis[x][i]=inf; dis[x][x]=0; q.push(x); inq[x]=1; while(!q.empty()) { u=q.front(); inq[u]=0; q.pop(); for(int i=0;i<g[u].size();i++) { v=g[u][i]; if(dis[x][v]>dis[x][u]+1) { dis[x][v]=dis[x][u]+1; if(inq[v]==0) { inq[v]=1; q.push(v); } } } }}int main(){ int u,v,a,b,c,d,mx,tmp,a1,b1,c1,d1,k; scanf("%d%d",&n,&m); for(int i=0;i<=n;i++) { g[i].clear(); gt[i].clear(); } for(int i=0;i<m;i++) { scanf("%d%d",&u,&v); g[u].push_back(v); gt[v].push_back(u); } for(int i=1;i<=n;i++) { for(int j=0;j<4;j++) pt[i][j].w=-1; spfa(i); } for(int i=1;i<=n;i++) { for(int j=0;j<4;j++) p[i][j].w=-1; for(int j=1;j<=n;j++) { v=j; if(dis[i][j]==inf||i==j) continue; p[i][4].w=dis[i][v]; p[i][4].v=v; for(k=3;k>=0;k--) { if(p[i][k+1].w>p[i][k].w) swap(p[i][k+1],p[i][k]); else break; } } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(dis[j][i]==inf||i==j) continue; pt[i][4].w=dis[j][i]; pt[i][4].v=j; for(k=3;k>=0;k--) { if(pt[i][k+1].w>pt[i][k].w) swap(pt[i][k+1],pt[i][k]); else break; } } } mx=-1; for(a=1;a<=n;a++) { for(b=1;b<=n;b++) { tmp=dis[a][b]; if(tmp==inf||a==b) continue; for(k=0;k<4;k++) { if(p[b][k].v==a||p[b][k].v==b) continue; else if(p[b][k].w==-1) continue; else break; } if(k==4) continue; tmp+=p[b][k].w; c=p[b][k].v; for(k=0;k<4;k++) { if(pt[a][k].v==a||pt[a][k].v==b||pt[a][k].v==c) continue; else if(pt[a][k].w==-1) continue; else break; } if(k<4) { if(mx<tmp+pt[a][k].w) { a1=a; b1=b; c1=c; d1=pt[a][k].v; mx=tmp+pt[a][k].w; } } } } printf("%d %d %d %d\n",d1,a1,b1,c1); return 0;}
0 0
- Codeforces Round #349 (Div. 2) D. World Tour 【spfa+暴力枚举】
- Codeforces Round #349 (Div. 2) D. World Tour
- Codeforces Round #349 (Div. 1) B. World Tour (暴力搜索)
- CodeForces 666B World Tour(spfa+枚举)
- Codeforces Round #279 (Div. 2) D 暴力
- Codeforces Round #431 (Div. 2) 849B Tell Your World(暴力+枚举)
- Codeforces Round #349 (Div. 1) B. World Tour
- Codeforces 66D World tour BFS+枚举
- Codeforces Round #103 (Div. 2) D. Missile Silos(spfa + 枚举边)
- Codeforces Round #243 (Div. 2) A,B,C(暴力枚举)
- Codeforces Round #392(Div. 2) B Blown Garland【暴力枚举】
- Codeforces Round #402 (Div. 2)B. Weird Rounding【暴力枚举】
- Codeforces Round #392(Div. 2) B Blown Garland【暴力枚举】
- Codeforces Round #451 (Div. 2) Proper Nutrition 暴力枚举
- Codeforces Round #103 (Div. 2) D题 SPFA
- Codeforces Round #265 (Div. 2)D. Restore Cube 暴力
- Codeforces Round #340 (Div. 2) 617D Polyline(暴力)
- Codeforces Round #322 (Div. 2) D. Three Logos(暴力)
- PowerMock 之进阶学习
- 栈、队列、树、字符串的存储结构
- Android系统的常用权限
- 机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程
- 《商州》读感
- Codeforces Round #349 (Div. 2) D. World Tour 【spfa+暴力枚举】
- C语言实现多态
- Cordova 6 常用插件
- 无线传感网络通信标准IEEE 802.15.4
- 使用php脚本向Mysql服务器发送SQL(基本)
- java学习总结
- iOS之FMDB的基本使用
- CentOS 7 上编译安装MySQL 5.6.29
- NGINX引入线程池 性能提升9倍