Pagini recente » Cod sursa (job #3246105) | Cod sursa (job #1290479) | Cod sursa (job #29438) | Cod sursa (job #2080183) | Cod sursa (job #1212448)
# include <fstream>
# include <vector>
# include <queue>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int INF=2147483647;
int n,m,i,x,y,c,d[50001],t[50001];
vector<pair<int,int> > a[50001];
vector<pair<int,int> >::iterator j;
queue<int> b;
void read()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>c;
a[x].push_back(make_pair(y,c));
}
f>>x>>y;
}
void dijkstra()
{
int z,mini;
for(i=1;i<=n;i++)
d[i]=INF;
d[x]=0;
b.push(x);
while(b.size())
{
z=b.front();
b.pop();
for(j=a[z].begin();j!=a[z].end();j++)
if(d[(*j).first]>d[z]+(*j).second)
{
d[(*j).first]=d[z]+(*j).second;
t[(*j).first]=z;
b.push((*j).first);
}
}
}
void write()
{
g<<d[y]<<'\n';
while(t[y])
{
g<<t[y]<<" ";
y=t[y];
}
}
int main()
{
read();
dijkstra();
write();
f.close();
g.close();
return 0;
}