Pagini recente » Cod sursa (job #884557) | Borderou de evaluare (job #2116724) | Cod sursa (job #831788) | Cod sursa (job #1786525) | Cod sursa (job #674840)
Cod sursa(job #674840)
#include <fstream>
#include <queue>
#include <algorithm>
#include <vector>
using namespace std;
const int manx=50005;
const int inf=100000;
int N,M;
vector <pair <int,int>> G[maxn];
int Dmin[maxn];
void citeste()
{
int i;
ifstream f("dijkstra.in");
f>>N>>M;
for(i=0; i<N;++i)
int a,b,c;
G[a].push_back(make_pair(b,c));
}
void dijkstra()
{
bool viz[maxn];
queue <int> Q;
int i;
for(i=0;i<=MAXN;i++)
{
Dmin[i]=INF;
viz[i]=false;
}
Dmin[1] = 0;
Q.push(1);
viz[1] = true;
while(Q.empty())
{
int nod=Q.front();
Q.pop();
viz[nod]=false;
for(vector<pair< int,>>::iterator it=G.nod.begin();it!=G[nod].end(); ++it;)
if(Dmin[nod] + it->second < Dmin[it->first])
{
Dmin[it->first]= Dmin[nod] +it->second;
if(!viz[it->first]=true;
}
}
}
}
void afisare()
{
fstream g("dijkstra.out");
for(i=2; i<=N; ++i)
f<<(Dmin[i] < INF ? Dmin[i] : 0) << " ";
}
int main()
{
citeste();
dijkstra();
afisare();
}