Pagini recente » Cod sursa (job #2871463) | Cod sursa (job #2074805) | Cod sursa (job #189594) | Cod sursa (job #1305580) | Cod sursa (job #1864959)
#include <fstream>
#include <iostream>
#include <queue>
#include <vector>
#include <limits.h>
#define X pair<int, int>
#define DN 100005
using namespace std;
ifstream f("ubuntzei.in");
ofstream g("ubuntzei.out");
vector <X> a[100];
queue <int> Q;
int t[100],d[100],x1,viz[100];
int minim(int x)
{
int b=DN, A=0;
for(int i=0;i<a[x].size();++i)
if(a[x][i].second<b) {b=a[x][i].second; A=a[x][i].first;}
return A;
}
void djk(int x0)
{
Q.push(x0);
d[x0]=0;
for(int i=0;i<a[x0].size();++i)
{
Q.push(a[x0][i].first);
//g<<Q.back()<<" ";
d[a[x0][i].first]=a[x0][i].second;
}
viz[Q.front()]=1;
Q.pop();
// g<<endl<<Q.size()<<endl;
while(!Q.empty())
{
for(int i=0;i<a[Q.front()].size();++i)
{
if(viz[Q.front()]==0)
{
Q.push(a[Q.front()][i].first);
//cout<<a[Q.front()][i].first<<" ";
if(d[a[Q.front()][i].first]>d[Q.front()]+a[Q.front()][i].second)
d[a[Q.front()][i].first]=d[Q.front()]+a[Q.front()][i].second;
}
}
viz[Q.front()]=1;
Q.pop();
}
}
int main()
{
int n,m,x,y,i,l;
f>>n>>m>>x1;
for(i=0;i<m;++i)
{
f>>x>>y>>l;
a[x].push_back(X(y,l));
a[y].push_back(X(x,l));
}
for(i=1;i<=n;++i)
d[i]=DN;
djk(1);
g<<d[n]<<" ";
return 0;
}