Pagini recente » Cod sursa (job #9093) | Cod sursa (job #279651) | Cod sursa (job #488861) | Cod sursa (job #2610911) | Cod sursa (job #2755122)
#include <bits/stdc++.h>
#define N 250005
#define f first
#define s second
#define INF 0x3F3F3F3F
using namespace std;
FILE *pFile=fopen("pscnv.in","r");
ofstream fout ("pscnv.out");
vector< pair<int,int> > g[N];
int n,m,p,q,x,y,z,k,ct;
int v[N],vmini[N];
queue<int> qc;
char s[101];
int CP()
{
int nr=0;
while(isdigit(s[ct]))
{
nr=nr*10+(s[ct]-'0');
ct++;
}
ct++;
return nr;
}
void CitireParsata()
{
fgets(s,101,pFile);
n=CP();m=CP();p=CP();q=CP();
for(int i=1;i<=m;++i)
{
fgets(s,101,pFile);
ct=0;
x=CP();
y=CP();
z=CP();
g[x].push_back(make_pair(y,z));
}
fclose(pFile);
}
void Dijkstra()
{
for(int i=1;i<=n;++i)
vmini[i]=INF;
vmini[p]=0;
v[p]=1;
qc.push(p);
while(!qc.empty())
{
int x=qc.front();
qc.pop();
v[x]=0;
for(int i=0;i<g[x].size();i++)
{
int nod=g[x][i].f;
int dist=g[x][i].s;
if(vmini[nod]>max(vmini[x],dist))
{
vmini[nod]=max(vmini[x],dist);
if(v[nod]==0&&nod!=q)
{
qc.push(nod);
v[nod]=1;
}
}
}
}
}
int main()
{
CitireParsata();
Dijkstra();
fout<<vmini[q];
return 0;
}
/*
8 9 1 4
1 2 3
1 3 1
1 5 5
2 4 7
3 4 1000
5 7 2
5 8 6
8 4 1
4 6 69
void DFS(int x)
{
viz[x]=1;
for(int i=0;i<g[x].size();i++)
if(viz[g[x][i].f]==0)
DFS(g[x][i].f);
st[k--]=x;
}
void SortTop()
{
k=n;
for(int i=1;i<=n;++i)
if(viz[i]==0)
DFS(i);
}
void Solve()
{
for(int i=1;i<=n;++i)
{
int x=st[i];
int minim=INF;
if(l[x].size()==0)vmin[x]=0;
else
{
for(int j=0;j<l[x].size();j++)
{
int nod=l[x][j].f;
int dist=l[x][j].s;
if(max(vmin[nod],dist)<minim)
minim=max(vmin[nod],dist);
}
vmin[x]=minim;
}
}
}
*/