Submission

Status:

[PPPPPPPPPPPPPPPPPPPP]

Score: 100

User: lufychop

Problemset: รถยนต์ รถไฟ เรือเมล์ ลิเก ตำรวจ

Language: cpp

Time: 0.038 second

Submitted On: 2025-03-14 14:20:55

#include <bits/stdc++.h>

using namespace std;

int main(void)
{
	priority_queue<pair<long long,long long>,vector<pair<long long,long long>>,greater<pair<long long,long long>>> pq;
	vector<vector<bool>> adjmatrix(401,vector<bool>(401,false));
	vector<vector<long long>> adj(401);
	vector<long long> dis(401,1e18);
	long long n,m,t1,t2;
	cin>>n>>m;
	for(int i=0;i<m;i++)
	{
		cin>>t1>>t2;
		adjmatrix[t1][t2]=true;
		adjmatrix[t2][t1]=true;
	}
	if(adjmatrix[1][n])
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=i+1;j<=n;j++)
			{
				if(adjmatrix[i][j])
				{
					continue;
				}
				adj[i].push_back(j);
				adj[j].push_back(i);
			}
		}
	}
	else
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=i+1;j<=n;j++)
			{
				if(adjmatrix[i][j])
				{
					adj[i].push_back(j);
					adj[j].push_back(i);
				}
			}
		}
	}
	dis[1]=0;
	pq.push({0,1});
	while(!pq.empty())
	{
		t1=pq.top().first;
		t2=pq.top().second;
		pq.pop();
		if(dis[t2]<t1)
		{
			continue;
		}
		for(int i=0;i<adj[t2].size();i++)
		{
			if(dis[adj[t2][i]]>t1+abs(adj[t2][i]-t2))
			{
				dis[adj[t2][i]]=t1+abs(adj[t2][i]-t2);
				pq.push({dis[adj[t2][i]],adj[t2][i]});
			}
		}
	}
	if(dis[n]==1e18)
	{
		cout<<-1;
		return 0;
	}
	cout<<10*dis[n];
	return 0;
}	
/*
5 3
1 3
3 4
4 5
*/