Pagini recente » Cod sursa (job #1837400) | Cod sursa (job #1579620) | Cod sursa (job #2225842) | Cod sursa (job #1990897) | Cod sursa (job #1299939)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define inf (1<<30)
using namespace std;
int n,m,x,y,c;
ifstream f("dijkstra.in");
ofstream go("dijkstra.out");
struct nod
{
int b,cost;
}aux;
queue<int> Q;
vector<vector<nod> > G;
vector<int> D;
vector<bool> INQ;
void Dijkstra(int s)
{
D[s]=0;
Q.push(s);
INQ[s]=true;
while(!Q.empty())
{
x=Q.front();
Q.pop();
INQ[x]=false;
for(int i=0; i<G[x].size(); i++)
{
y=G[x][i].b;
c=G[x][i].cost;
if(D[y]>D[x]+c)
{
D[y]=D[x]+c;
if(!INQ[y])
{
Q.push(y);
INQ[y]=true;
}
}
}
}
}
int main()
{
f>>n>>m;
G.resize(n+1);
for(int i=0; i<=n; i++)
{
INQ.push_back(false);
D.push_back(inf);
}
for(int i=0; i<m; i++)
{
f>>x>>y>>c;
aux.b=y;
aux.cost=c;
G[x].push_back(aux);
}
Dijkstra(1);
for(int i=2; i<=n; i++)
{
go<<D[i]<<" ";
}
f.close();
go.close();
return 0;
}