Pagini recente » Cod sursa (job #2457093) | Cod sursa (job #1843815) | Cod sursa (job #1846431) | Cod sursa (job #1721951) | Cod sursa (job #1689447)
#include <iostream>
#include <fstream>
#define Max 1000001
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijsktra.out");
int distances[50001];
int n,m;
bool check;
class pairs
{
int u,v,cost;
public:
int getU() {return u;}
int getV() {return v;}
int getCost() {return cost;}
void setValues(int U=0,int V=0,int Cost=0) { u=U; v=V; cost=Cost;}
pairs(int U=0,int V=0,int Cost=0):u(U),v(V),cost(Cost){};
}edges_cost[250001];
void dijkstra()
{
for(int i=0;i<n;i++) distances[i]=Max;
distances[0]=0;
do
{
check=false;
for(int i=0;i<m;i++)
{
if(distances[edges_cost[i].getV()]>(distances[edges_cost[i].getU()]+edges_cost[i].getCost()))
{
distances[edges_cost[i].getV()] = distances[edges_cost[i].getU()]+edges_cost[i].getCost();
check=true;
}
}
}while(!check);
}
void printDistances()
{
for(int i=0;i<n;i++)
{
if(i==0) continue;
if(distances[i]<Max) fout << distances[i] << " ";
else fout << "0 ";
}
}
int main()
{
int x,y,tempCost;
fin >> n >> m;
for(int i=0;i<m;i++)
{
fin >> x >> y >> tempCost;
x--; y--;
edges_cost[i].setValues(x,y,tempCost);
}
dijkstra();
printDistances();
return 0;
}