Pagini recente » Cod sursa (job #1908612) | Cod sursa (job #625352) | Cod sursa (job #1096267) | Cod sursa (job #2162017) | Cod sursa (job #530354)
Cod sursa(job #530354)
# include <fstream>
# include <vector>
# include <set>
# define DIM 250003
# define pb push_back
# define mp make_pair
using namespace std;
int n, m, ss, dd;
short v[DIM], d[DIM], s[DIM];
vector< pair<int,short int> > G[DIM];
set< pair<short int, int> >S;
void read ()
{
ifstream fin ("pscnv.in");
fin>>n>>m>>ss>>dd;
int x, y, k;
for(int i=1;i<=m;++i)
{
fin>>x>>y>>k;
if (x!=y)
G[x].pb(mp(y,k));
}
}
void prim ()
{
for(int i=1;i<=n;++i)
d[i]=1<<10;
d[ss]=0;
S.insert(mp(0,ss));
int k, c;
while (S.size())
{
k=(*S.begin()).second;c=(*S.begin()).first;S.erase(S.begin());
if (!v[k])
{
v[k]=1;
if (k==dd)return;
for(unsigned i=0;i<G[k].size();++i)
if (!v[G[k][i].first] && d[G[k][i].first]>G[k][i].second)
{
d[G[k][i].first]=G[k][i].second;
if (s[k]>G[k][i].second)s[G[k][i].first]=s[k];
else s[G[k][i].first]=G[k][i].second;
S.insert(mp(G[k][i].second,G[k][i].first));
}
}
}
}
int main ()
{
read ();
prim ();
ofstream fout ("pscnv.out");
fout<<s[dd];
return 0;
}