spfa:
#include<bits/stdc++.h>
using namespace std;
const int no=2147483647;
int n,m,s;
int dis[100010];
bool vis[100010];
vector<int> ma[100010],w[100010];
void sp()
{
queue<int> q;
memset(dis,0x3f,sizeof(dis));
dis[s]=0;
q.push(s);
vis[s]=1;
while(!q.empty())
{
int u=q.front();
q.pop();
vis[u]=0;
for(int i=0;i<ma[u].size();i++)
{
int v=ma[u][i];
if(dis[v]>dis[u]+w[u][i])
{
dis[v]=dis[u]+w[u][i];
if(!vis[v])
{
q.push(v);
vis[v]=1;
}
}
}
}
bool f=0;
for(int i=1;i<=n;i++)
{
f=1;
cout<<dis[i]<<" ";
}
if(!f)cout<<no;
}
int main(){
cin>>n>>m>>s;
for(int i=1;i<=m;i++)
{
int u,v,ww;
cin>>u>>v>>ww;
ma[u].push_back(v);
w[u].push_back(ww);
}
sp();
return 0;
}
dijkstra:
#include<bits/stdc++.h>
using namespace std;
int n,m,s;
vector<int> v[100010],w[100010];
struct aa
{
int id,len;
};
bool vis[100010];
int dis[100010];
bool operator >(aa x,aa y)
{
return x.len>y.len;
}
void stra()
{
priority_queue<aa,vector<aa>,greater<aa>> q;
memset(dis,0x3f,sizeof(dis));
dis[s]=0;
q.push(aa{s,0});
while(!q.empty())
{
int x=q.top().id;
q.pop();
if(vis[x])continue;
vis[x]=1;
for(int i=0;i<v[x].size();i++)
{
int y=v[x][i];
if(!vis[y] && dis[y]>dis[x]+w[x][i])
{
dis[y]=dis[x]+w[x][i];
q.push(aa{y,dis[y]});
}
}
}
}
int main(){
cin>>n>>m>>s;
for(int i=1;i<=m;i++)
{
int x,y,z;
cin>>x>>y>>z;
v[x].push_back(y);
w[x].push_back(z);
}
stra();
for(int i=1;i<=n;i++)
{
if(dis[i]<2e9)cout<<dis[i]<<" ";
else
{
cout<<2147483647<<" ";
}
}
return 0;
}