Pagini recente » Cod sursa (job #1863257) | Cod sursa (job #1456711) | Cod sursa (job #2761683) | Cod sursa (job #1916316) | Cod sursa (job #2397128)
#include <iostream>
#include <vector>
#include <fstream>
#include <limits.h>
using namespace std;
int main()
{
int n,m,i,x,y,c;
vector<int>graph[50000];
vector<int>graphc[50000];
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
in>>n>>m;
for(int i=1;i<=m;i++)
{
in>>x>>y>>c;
graph[x].push_back(y);
graphc[x].push_back(c);
}
int dist[50005], viz[50005]={0};
for(i=2;i<=n;i++)
{
dist[i]=INT_MAX;
}
dist[1]=0;
for(int t=1;t<=n;t++)
{
int vmin=INT_MAX;
int index=-1;
for(int j=1;j<=n;j++)
{
if(!viz[j] && dist[j]<vmin)
{
vmin=dist[j];
index=j;
}
}
viz[index]=1;
int lim=graph[index].size();
for(int i=0;i<lim;i++)
{
int vecin=graph[index][i];
if(dist[vecin]>dist[index]+graphc[index][i])
dist[vecin]=dist[index]+graphc[index][i];
}
}
for(i=2;i<=n;i++)
{
if(dist[i]==INT_MAX)
dist[i]=0;
out<<dist[i]<<" ";
}
return 0;
}