Nu aveti permisiuni pentru a descarca fisierul grader_test15.ok
Cod sursa(job #1833849)
Utilizator | Data | 23 decembrie 2016 13:08:17 | |
---|---|---|---|
Problema | Algoritmul lui Dijkstra | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.93 kb |
#include <fstream>
#include <vector>
#include <list>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int main()
{
int n,m;
vector<vector<int>> A;
vector<bool> v;
fin>>n>>m;
A.resize(n);
v.resize(n);
for(int i=0;i<n;i++) A[i].resize(n);
while(m--)
{
int a,b,c;
fin>>a>>b>>c;
A[a-1][b-1]=c;
}
list<int> d;
d.push_back(0);
v[0]=true;
while(d.size())
{
int c=d.front();
d.pop_front();
for(int i=1;i<n;i++)
{
if((A[c][i]!=0)&&(A[0][i]==0||A[0][c]+A[c][i]<=A[0][i]))
{
A[0][i]=A[0][c]+A[c][i];
if(v[i]==false)
{
d.push_back(i);
v[i]=true;
}
}
}
}
for(int i=1;i<n;i++) fout<<A[0][i]<<" ";
return 0;
}