Pagini recente » Cod sursa (job #1279097) | Cod sursa (job #563676) | Cod sursa (job #2545876) | Cod sursa (job #947025) | Cod sursa (job #1638718)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
#define NMAX 21000
int n,m,graph[NMAX][NMAX];
int minDistance(int dist[NMAX],bool fol[NMAX])
{
int minn = INFINITY,minIndex=0;
for(int i=0;i<n;i++)
{
if(fol[i]==false && dist[i]<=minn)
{
minn = dist[i];
minIndex = i;
}
}
return minIndex;
}
void print(int dist[NMAX])
{
for(int i=1;i<n;i++)
{
if(dist[i]==INFINITY)
g<<0<<" ";
else
g<<dist[i]<<" ";
}
}
void dijkstra(int source)
{
int dist[NMAX];
bool fol[NMAX];
for(int i=0;i<n;i++)
{
dist[i] = INFINITY;
fol[i] = false;
}
dist[source] = 0;
for(int i=0;i<n-1;i++)
{
int u = minDistance(dist,fol);
fol[i] = true;
for(int j=0;j<n;j++)
{
if(!fol[j] && graph[u][j] && dist[u] != INFINITY && dist[u] + graph[u][j] < dist[j])
{
dist[j] = dist[u] + graph[u][j];
}
}
}
print(dist);
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,cost;
f>>x>>y>>cost;
graph[x-1][y-1]=graph[y-1][x-1]=cost;
}
dijkstra(0);
return 0;
}