Pagini recente » Cod sursa (job #1933503) | Cod sursa (job #2697025) | Cod sursa (job #2610317) | Cod sursa (job #2047721) | Cod sursa (job #2861784)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int vegtelen=10000;
int n,m;
int d[201];
bool elemeAzOptSornak[201]={0};
vector < pair<int,int> > graf[201];
struct osszehasonlitas
{
bool operator()(int x, int y)
{
return d[x]>d[y];
}
};
priority_queue <int, vector<int>, osszehasonlitas> optimalizalandoElemek;
void beolvas()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b,c;
fin>>a>>b>>c;
graf[a].push_back(make_pair(b,c));
graf[b].push_back(make_pair(a,c));
}
fin.close();
}
void dijkstra(int kezdoCsucs)
{
for(int i=1;i<=n;i++)
{
d[i]=vegtelen;
}
d[kezdoCsucs]=0;
optimalizalandoElemek.push(kezdoCsucs);
elemeAzOptSornak[kezdoCsucs]=true;
while(!optimalizalandoElemek.empty())
{
int csucs=optimalizalandoElemek.top();
optimalizalandoElemek.pop();
elemeAzOptSornak[csucs]=false;
for(size_t i=0;i<graf[csucs].size();i++)
{
int szomszed=graf[csucs][i].first;
int tavolsag=graf[csucs][i].second;
if(d[csucs]+tavolsag<d[szomszed])
{
d[szomszed]=d[csucs]+tavolsag;
if(!elemeAzOptSornak[szomszed])
{
optimalizalandoElemek.push(szomszed);
elemeAzOptSornak[szomszed]=1;
}
}
}
}
}
void kiir()
{
for(int i=2;i<=n;i++)
{
if(d[i]!=vegtelen)
fout<<i<<" "<<d[i]<<endl;
else
fout<<"x ";
}
fout.close();
}
int main()
{
beolvas();
dijkstra(1);
kiir();
return 0;
}