Pagini recente » Istoria paginii runda/omg_comeback | Monitorul de evaluare | Cod sursa (job #252121) | Istoria paginii runda/your_11th_nightmare | Cod sursa (job #971497)
Cod sursa(job #971497)
#include<iostream>
#include<fstream>
using namespace std;
int a[101][101], viz[101], n, k, t[101], d[101],pinf=20000000;
void dijkstra(int k)
{
int i,j,x,min;
for(i=1;i<=n;i++)
{
d[i]=a[k][i];
if(a[k][i]<pinf)
t[i]=k;
}
viz[k]=1;
t[k]=0;
for(i=1;i<=n-1;i++)
{
min=pinf;
for(j=1;j<=n;j++){
if(viz[j]==0&&d[j]<min){
min=d[i];
x=j;
}
}
viz[x]=1;
for(j=1;j<=n;j++)
if(viz[j]==0 && d[j]>d[x]+a[x][j])
{
d[j]=d[x]+a[x][j];
t[j]=x;
}
}
}
int main()
{
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
f>>n>>k;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
a[i][j]=pinf;
a[i][i]=0;
}
int i,j,cost;
while(f>>i>>j>>cost)
{
a[i][j]=cost;
}
dijkstra(1);
for(int i=2;i<=n;i++)
if(d[i]<pinf)
g<<d[i]<<' ';
else
g<<0<<' ';
return 0;
}