Pagini recente » Cod sursa (job #1621721) | Cod sursa (job #851752) | Cod sursa (job #2217084) | Cod sursa (job #407635) | Cod sursa (job #265938)
Cod sursa(job #265938)
#include <iostream>
#include <fstream>
using namespace std;
int v[100][100];
int noduri;
int sel[100];
int par[100];
int dist[100];
void citire();
void afisare();
void init();
int startNOD=1;
void dijkstra(int k)
{
sel[k]=true;
int DIM=0;
int NOD=0;
for(int i=2; i<=noduri; i++)
{
if((dist[i] > dist[k]+v[k][i] || dist[i]==0) && v[k][i]!=0 )
{
dist[i]=dist[k]+v[k][i];
}
if(sel[i]==false && (DIM > dist[i] || DIM==0) && dist[i]!=0 )
{
DIM=dist[i];
NOD=i;
}
}
if(DIM!=0)
dijkstra(NOD);
}
int main()
{
citire();
dijkstra(1);
/*dijkstra(2);
dijkstra(4);
dijkstra(3);*/
//init();
afisare();
cin.sync();
cin.get();
return 0;
}
void init()
{
for(int i=1; i<=noduri; i++)
if(v[1][i]!=0)
dist[i]=v[1][i];
}
void afisare()
{
/*for(int i=1; i<=noduri; i++)
{
cout<<endl;
for(int j=1; j<=noduri; j++)
cout<<v[i][j]<<" ";
}
cout<<endl<<endl;
for(int i=1; i<=noduri; i++)
cout<<sel[i]<<" ";
cout<<endl;
for(int i=1; i<=noduri; i++)
cout<<par[i]<<" ";
cout<<endl;
for(int i=1; i<=noduri; i++)
cout<<dist[i]<<" ";
*/
fstream g;
g.open("dijkstra.out",ios::out);
for(int i=2; i<=noduri; i++)
g<<dist[i]<<" ";
g.close();
}
void citire()
{
fstream f;
f.open("dijkstra.in",ios::in);
int muchii;
f>>noduri>>muchii;
for(int i=1; i<=muchii; i++)
{
int x,y,z;
f>>x>>y>>z;
v[x][y]=z;
v[y][x]=z;
}
f.close();
}