Pagini recente » Cod sursa (job #3221985) | Cod sursa (job #655842) | Cod sursa (job #1160599) | Cod sursa (job #2784706) | Cod sursa (job #2874838)
#include<bits/stdc++.h>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
const int INF = 1e9;
struct Nod
{
int nr, cost;
Nod(int _nr, int _cost)
{
this -> nr = _nr;
this -> cost = _cost;
}
};
vector<Nod> graf[50005];
vector<int> pula_mea;
int n, p, m;
void citire()
{
in>>n>>m;
int x, y, c;
for ( int i = 1 ; i <= m ; i++ )
{
in>>x>>y>>c;
Nod aux(y,c);
graf[x].push_back(aux);
aux.nr = x;
graf[y].push_back(aux);
}
}
bool viz[50005];
void dijkstra (int start)
{
vector<int> ans(n + 1, INF);
queue<int> q;
q.push(start);
ans[start] = 0;
while (!q.empty())
{
int idk = q.front();
for ( Nod _nod : graf[idk] )
{
if ( ans[_nod.nr] > _nod.cost + ans[idk] )
{
ans[_nod.nr] = _nod.cost + ans[idk];
if ( !viz[_nod.nr] )
{
viz[_nod.nr] = true;
q.push(_nod.nr);
}
}
}
q.pop();
}
pula_mea = ans;
}
void afisare()
{
for ( int i = 2 ; i < pula_mea.size(); i++ )
{
out<<( pula_mea[i] == INF ? 0 : pula_mea[i] )<<" ";
}
}
int main()
{
citire();
dijkstra(1);
afisare();
return 0;
}