Pagini recente » Cod sursa (job #1497466) | Cod sursa (job #1108891) | Cod sursa (job #2590949) | Cod sursa (job #282379) | Cod sursa (job #525024)
Cod sursa(job #525024)
#include<fstream>
#include<vector>
#include<queue>
#define dmax 50002
#define inf 9999
using namespace std;
int n,m;
int d[dmax],uz[dmax];
vector<int> a[dmax];
vector<int> cost[dmax];
queue<int> q;
void citire()
{
int i,x,y,c;
FILE *fin;
fin=fopen("dijkstra.in","r");
fscanf(fin,"%d %d",&n, &m);
for (i=1; i<=m; i++)
{
fscanf(fin,"%d %d %d",&x, &y, &c);
a[x].push_back(y);
cost[x].push_back(c);
}
fclose(fin);
}
void solve()
{
int i,elem;
q.push(1);
for (i=2; i<=n; i++)
d[i]=inf;
while (q.size())
{
elem=q.front();
for (i=0; i<(int)a[elem].size(); i++)
if (d[a[elem][i]] > d[elem] + cost[elem][i])
{
d[a[elem][i]]= d[elem] + cost[elem][i];
q.push(a[elem][i]);
}
q.pop();
}
}
void afisare()
{
int i;
ofstream fout("dijkstra.out");
for (i=2; i<=n; i++)
if (d[i]!=inf)
fout<<d[i]<<" "; else
fout<<"0 ";
fout.close();
}
int main()
{
citire();
solve();
afisare();
return 0;
}