Pagini recente » Profil florinhaja | Profil florinhaja | Profil florinhaja | Istoria paginii utilizator/cristianburlacu | Cod sursa (job #2898678)
#include <fstream>
#include <queue>
#include <iostream>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n,**mat,inf=2e9,dist[50001],k;
bool viz[50001];
int neviz;
void dfs(int nod)
{
for(int i=1 ; i<=n ; i++)
{
if(mat[nod][i]+dist[nod]<dist[i])
dist[i]=mat[nod][i]+dist[nod];
}
}
int main()
{
int m;
in>>n>>m;
mat=new int*[n];
for(int i=1 ; i<=n ; i++)
{
mat[i]=new int[n];
for(int j=1 ; j<=n ; j++)
mat[i][j]=inf;
dist[i]=inf;
}
while(m)
{
int a,b,c;
in>>a>>b>>c;
mat[a][b]=c;
if(a==1)
dist[b]=c;
m--;
}
neviz=n-1;
viz[1]=1;
while(neviz!=0)
{
/*for(int i=1 ; i<=n ; i++)
cout<<viz[i]<<" ";
cout<<endl;*/
int minn=inf,imin;
for(int i=1 ; i<=n ; i++)
if(dist[i]<minn && viz[i]==0)
{
minn=dist[i];
imin=i;
}
//cout<<imin<<endl;
dfs(imin);
viz[imin]=1;
neviz--;
//cout<<endl;
}
for(int i=2 ; i<=n ; i++)
cout<<dist[i]<<" ";
return 0;
}