Pagini recente » Cod sursa (job #689659) | Cod sursa (job #401934) | Cod sursa (job #2850120) | Cod sursa (job #1148169) | Cod sursa (job #2698447)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
queue <int> Coada;
vector <pair<int,int> > G[105];
const int inf=2e9;
int x,y,n,p,cost,D[105];
void Dijkstra()
{
while(!Coada.empty())
{
int nod=Coada.front();
Coada.pop();
for(vector<pair<int,int> >::iterator it=G[nod].begin(); it!=G[nod].end(); ++it)
if(D[nod]+it->second<D[it->first])
{
D[it->first]=D[nod]+it->second;
Coada.push(it->first);
}
}
}
int main()
{
f>>n>>p;
while(f>>x>>y>>cost)
G[x].push_back({y,cost});
for(int i=1; i<=n; i++)
D[i]=inf;
D[p]=0;
Coada.push(p);
Dijkstra();
for(int i=1; i<=n; i++)
{
if(D[i]==inf)
g<<-1<<" ";
else g<<D[i]<<" ";
}
return 0;
}