Codeforces Round #333 (Div. 2) B. Approximating a Constant Range
来源:互联网 发布:mac谷歌插件安装 编辑:程序博客网 时间:2024/05/21 06:42
#include <stdio.h>#include <string.h>#include <algorithm>#define INF 1 << 29using namespace std;int map1[410][410],map2[410][410]; //记录火车的路和大巴的路int n,m;void dijkstra(int map[][410]) { int res[410]; //记录结果 int vis[410]; //访问标记 int v,min; //每相连点的最小下标和最短的路 for(int i = 1 ; i <= n ; i++ ) //初始化 { vis[i] = 0; res[i] = map[1][i]; } for (int i = 1 ; i <= n ; i++ ) { min = 1<< 29; for (int j = 1 ; j <= n ; j++ ) { if (vis[j] == 0 && res[j] < min ) //遍历,找出与这个点相连的最小路 { v = j; min = res[j]; } } vis[v] = 1; for (int j = 1 ; j <= n ; j++ ) { if(vis[j] == 0 && res[j] > map[v][j] + res[v]) //判断 { res[j] = map[v][j] +res[v]; } } } if (res[n] == INF) //如果最后的值没有改变 说明不可能 { printf("-1\n"); return ; } else printf("%d\n",res[n]);}int main(){ while (~scanf("%d%d",&n,&m ) ) { for (int i = 1 ; i <= n ; i++ ) //初始化 { for (int j = 1 ; j <= n ; j++ ) { if ( i == j) { map1[i][j] = 0; map1[i][j] = 0; } else { map1[i][j] = map1[j][i] = INF; map2[i][j] = map2[j][i] = INF; } } } int flag = 0; for (int i = 0 ; i < m ; i++ ) { int a,b; scanf("%d%d",&a,&b); if ( (a == 1 && b == n) || (a == n && b == 1) ) //必有一条路可以直达,所以判断是火车还是巴士 { flag = 1; } map1[a][b] = 1; map1[b][a] = 1; } for (int i = 1 ; i <= n ; i ++ ) { for (int j = 1 ; j <= n ; j++ ) { if ( map1[i][j] == INF || map1[i][j] == 0) { map2[i][j] = 1; map2[j][i] = 1; } } } if (m == n*(n-1)/2) //如果只有火车有路径 { printf("-1\n"); continue; } if (flag == 1) //如果火车可以直达 { dijkstra(map2); } else if (flag == 0) //如果大巴可以直达 { dijkstra(map1); } } return 0;}
0 0
- Codeforces Round #333 (Div. 2) B. Approximating a Constant Range
- Codeforces Round #333 (Div. 2) B. Approximating a Constant Range
- Codeforces Round #333 (Div. 2) B Approximating a Constant Range
- Codeforces Round #333 (Div. 2) B. Approximating a Constant Range
- Codeforces Round #333 (Div. 2) B. Approximating a Constant Range
- Codeforces Round #333 (Div. 2) B. Approximating a Constant Range
- Codeforces Round #333 (Div. 2)B. Approximating a Constant Range(ST+二分||set暴力)
- Codeforces Round #333 (Div. 2) B. Approximating a Constant Range (线段树区间最值)
- Codeforces Round #333 (Div. 2) 602B Approximating a Constant Range
- Codeforces Round #333 (Div. 2) B. Approximating a Constant Range (dp)
- CodeForces 602B Approximating a Constant Range(方法很多,不想费脑子就上线段树)——Codeforces Beta Round #333 (Div. 2)
- Codeforces 602B Approximating a Constant Range
- Codeforces 602B Approximating a Constant Range
- CF Round#333 Div2 B. Approximating a Constant Range
- Approximating a Constant Range CodeForces
- 【Codeforces Round 333 (Div 2)B】【贪心 多指针】Approximating a Constant Range 给定数组 相邻元素波动为1 求差值不超1的最长序连续子序列
- Codeforces 602B Approximating a Constant Range 【dp + 二分】
- Codeforces 602B Approximating a Constant Range(RMQ)
- 笔试练习四
- bzoj 1061: [Noi2008]志愿者招募(线性规划+网络流)
- HD 1525 Euclid's Game
- 【新人笔记16.04.06】JS--定义属性
- WiFi模块ip和端口的配置
- Codeforces Round #333 (Div. 2) B. Approximating a Constant Range
- js EventUtil addhandler removehandler
- Exchange Server 2013 分层通讯簿(HAB)
- leetcode 51. N-Queens
- 程序员应该接外包吗?
- C#事件的创建。
- Android开发学习总结(一)——搭建最新版本的Android开发环境
- <meta>中的http-equiv的参数值
- 删除链表中等于给定值val的所有节点