Pagini recente » Cod sursa (job #2951154) | Cod sursa (job #1925579) | Cod sursa (job #2055250) | Cod sursa (job #1760243) | Cod sursa (job #3286841)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector< pair<int,int> >M[50001];
int d[50001];
void bfs()
{
queue< int > Q;
Q.push(1);
while(Q.empty()!=1)
{
int nod=Q.front();
for(vector< pair<int,int> > :: iterator it=M[nod].begin();it!=M[nod].end();it++)
{
int copil=(*it).first;
int lun=(*it).second;
int sum=lun + d[nod];
if(d[copil]==0) ///daca nu am ajuns la nodul asta din 1 inca
{
d[copil]=sum;
Q.push(copil);
}
else if(d[copil]>sum)
{
d[copil]=sum;
Q.push(copil);
}
}
Q.pop();
}
}
int main()
{
int n,m,a,b,c;
fin>>n>>m;
for(int i=0;i<m;i++)
{
fin>>a>>b>>c;
M[a].push_back({b,c});
}
bfs();
for(int i=2;i<=n;i++)
{
fout<<d[i]<<" ";
}
return 0;
}