Pagini recente » Cod sursa (job #1719237) | Cod sursa (job #2098232) | Cod sursa (job #2752224) | Borderou de evaluare (job #1036372) | Cod sursa (job #2455540)
#include <iostream>
#include <queue>
#include <fstream>
using namespace std;
ifstream fin("dijikstra.in");
ofstream fout("dijikstra.out");
struct data{
int drum;
queue <int> referinta;
queue <int> referinta_lng;
}v[50005];
void pop_codada(int i)
{
while(!v[i].referinta.empty())
{
int x=v[i].referinta.front();
v[x].drum=v[i].drum+v[i].referinta_lng.front();
v[i].referinta.pop();
v[i].referinta_lng.pop();
}
}
void functie_de_cel_mai_scurt_drum_de_la_unu_la_orice_alt_nr(int a,int b,int lng) // stiu forate original numele
{
if(a==1)
{
if(v[b].drum>lng||v[b].drum==0)
{
v[b].drum=lng;
pop_codada(b);
}
return;
}
if(b==1)
{
if(v[a].drum>lng||v[a].drum==0)
{
v[a].drum=lng;
pop_codada(a);
}
return;
}
if(v[a].drum!=0)
{
if(v[b].drum>v[a].drum+lng||v[b].drum==0)
{
v[b].drum=v[a].drum+lng;
pop_codada(b);
}
return;
}
if(v[b].drum!=0)
{
if(v[a].drum>v[b].drum+lng||v[a].drum==0)
{
v[a].drum=v[b].drum+lng;
pop_codada(a);
}
return;
}
v[a].referinta.push(b);
v[a].referinta_lng.push(lng);
v[b].referinta.push(a);
v[b].referinta_lng.push(lng);
}
int main()
{
int n,m,i,j,a,b,c;
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>a>>b>>c;
functie_de_cel_mai_scurt_drum_de_la_unu_la_orice_alt_nr(a,b,c);
}
for(i=2;i<=n;i++)
fout<<v[i].drum<<" ";
return 0;
}