Pagini recente » Cod sursa (job #290154) | Cod sursa (job #1857833) | Cod sursa (job #2541619) | Cod sursa (job #842296) | Cod sursa (job #1585811)
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int d[1003],t[1003],n,m,Min;
int c[1003][1003];
int r,s[1003];
void citire()
{
int i,j,k,cost;
f>>n>>m;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(i!=j)
c[i][j]=10000;
for(k=1; k<=m; k++)
{
f>>i>>j>>cost;
c[i][j]=cost;
}
}
void dijkstra(int r)
{
s[r]=1;
int i;
for(i=2; i<=n; i++)
{
d[i]=c[1][i];
t[i]=r;
}
// d[r]=0;
// t[r]=0;
int k,j;
for(k=1; k<=n; k++)
{
Min=10000;
for(j=1; j<=n; j++)
if(Min>d[j] && s[j]==0)
{
i=j;
Min=d[j];
}
s[i]=1;
for(j=1; j<=n; j++)
if(d[j]>d[i]+c[i][j])
{
d[j]=d[i]+c[i][j];
t[j]=i;
}
}
}
int main()
{
citire();
dijkstra(1);
for(int i=1; i<=n; i++)
if(i!=1)
{
if(d[i]==10000)
d[i]=0;
g<<d[i]<<" ";
// g<<'\n';
}
return 0;
}