Pagini recente » Cod sursa (job #1702489) | Arhiva de probleme | Istoria paginii home | Profil BlackLord | Cod sursa (job #2524840)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in;
ofstream out;
#define INF 999999999;
vector <vector <pair <int,int> > > v;
queue < int > q;
vector < vector <int> > path;
int n,m,p,sf;
int dist[100002];
bool viz[100002];
void dijkstra2 (int start)
{
for(int i=1; i<=n; i++)
dist[i]=INF;
dist[start]=0;
viz[start]=1;
q.push(start);
while(!q.empty())
{
int i=q.front();
q.pop();
int m=v[i].size();
for(int k=0; k<m; k++)
{
int j=v[i][k].first;
int c=v[i][k].second;
if(dist[j]>dist[i]+c)
{
dist[j]=dist[i]+c;
viz[j]=1;
q.push(j);
}
}
}
}
int main()
{
in.open("dijkstra.in");
out.open("dijkstra.out");
in>>n>>p;
v.resize(n+2);
int i,j,c;
while(in>>i>>j>>c)
{
v[i].push_back( {j,c});
}
dijkstra2(1);
for(int i=2; i<=n; i++)
if(viz[i])
{
out<<dist[i]<<" ";
}
else out<<-1<<' ';
return 0;
}