前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >51nod 1649 齐头并进(Codeforces 601A The Two Routes) (最短路)

51nod 1649 齐头并进(Codeforces 601A The Two Routes) (最短路)

作者头像
Ch_Zaqdt
发布2019-01-10 16:20:40
3510
发布2019-01-10 16:20:40
举报
文章被收录于专栏:Zaqdt_ACMZaqdt_ACM

题目链接(Codeforces):http://codeforces.com/problemset/problem/601/A

题目链接(51nod):https://www.51nod.com/Challenge/Problem.html#!#problemId=1649

       51nod的题面是中文的

       思路就是两种车各跑一遍dij,就是处理一下边就好了。


AC代码:

代码语言:javascript
复制
#include <bits/stdc++.h>
#define maxm 200005
#define maxn 405
#define inf 0x3f3f3f3f
using namespace std;
struct Node{
	int to,w,next;
	bool operator < (const Node &a) const {
		return a.w < w;
	}
}Edge[maxm],S,Next;
int head[maxm],num;
int dist[maxm];
bool a[maxn][maxn],vis[maxm];
int n,m;

void init(){
	for(int i=0;i<=n;i++){
		head[i] = -1;
	}
	num = 0;
}

void add(int u,int v){
	Edge[num].w = 1;
	Edge[num].to = v;
	Edge[num].next = head[u];
	head[u] = num ++;
}

void dijkstra(int s){
	for(int i=0;i<=n;i++){
		dist[i] = inf;
		vis[i] = false;
	}
	priority_queue<Node> q;
	S.to = s;
	dist[s] = 0;
	q.push(S);
	while(!q.empty()){
		int u = q.top().to;
		q.pop();
		if(vis[u]) continue;
		vis[u] = true;
		for(int i=head[u];i!=-1;i=Edge[i].next){
			int v = Edge[i].to;
			if(!vis[v] && dist[v] > dist[u] + Edge[i].w){
				dist[v] = dist[u] + Edge[i].w;
				Next.to = v;
				Next.w = dist[v];
				q.push(Next);
			}
		}
	}
}

int main()
{
	// init();
	scanf("%d%d",&n,&m);
	init();
	for(int i=0;i<m;i++){
		int u,v;
		scanf("%d%d",&u,&v);
		a[u][v] = a[v][u] = true;
		add(u, v);
		add(v, u);
	}
	dijkstra(1);
	int ans1 = dist[n];
	init();
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			if(a[i][j] == false){
				add(i, j);
				add(j, i);
			}
		}
	}
	dijkstra(1);
	int ans2 = dist[n];
	printf("%d\n",max(ans1, ans2) == inf ? -1 : max(ans1, ans2));
	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档