REing......
#include<bits/stdc++.h>
using namespace std;
int asdfghjkl[800001];
int to[800001];
long long le[800001];
int nexty[200001] ;
long long dis[200001];
int o=1;
bool v[200001];
void asd(int x,int y,int g)
{
to[o]=y;
le[o]=g;
asdfghjkl[o]=nexty[x];
nexty[x]=o++;
}
int main(){
int n,m;
cin>>n>>m;
memset(asdfghjkl,0,sizeof(asdfghjkl));
memset(dis,127,sizeof(dis));
dis[1]=0;
for(long long i=1,x,y,g;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&g);
if(x==1)dis[y]=min(dis[y],g);
if(y==1)dis[x]=min(dis[x],g);
asd(x,y,g);
asd(y,x,g);
}
v[1]=true;
for(long long i=1;i<n;i++)
{
long long l=1e9;
long long k=0;
for(long long j=1;j<=n;j++)
if((!v[j])&&dis[j]<l)
{
l=dis[j];
k=j;
}
if(k==0)break;
v[k]=true;
for(int j=1;j<=n;j++)
for(int qwe=nexty[k];qwe!=0;qwe=asdfghjkl[qwe])
if(to[qwe]==j)
{
if(dis[k]+le[qwe]<dis[j])
dis[j]=dis[k]+le[qwe];
}
}
cout<<dis[n];
}
...