Pagini recente » Cod sursa (job #1675721) | Cod sursa (job #543506) | Cod sursa (job #1902920) | Cod sursa (job #369755) | Cod sursa (job #868524)
Cod sursa(job #868524)
#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
#include <queue>
#include <cstdlib>
#define DN 250005
#define pb push_back
#define mp make_pair
#define f first
#define s second
#define un unsigned
using namespace std;
int minim[DN];
queue< int > q;
vector<pair<int,int> > list[DN];
int main()
{
int n,m,x,y,ind=0,count=0,a,b,c;
FILE *in,*out;
long lsize;
char * buffer;
size_t result;
in=fopen("pscnv.in","rb");
out=fopen("pscnv.out","w");
fseek(in,0,SEEK_END);
lsize=ftell(in);
rewind(in);
buffer=(char*) malloc(sizeof(char)*lsize);
result=fread(buffer,1,lsize,in);
for(int i=0;i<lsize;++i)
{
if(isdigit(buffer[i]))
{
int nr=0;
while(isdigit(buffer[i]))
{
nr=nr*10+buffer[i]-'0';
++i;
}
++ind;
if(ind==1) n=nr;
else if(ind==2) m=nr;
else if(ind==3) x=nr;
else if(ind==4) y=nr;
else
{
++count;
if(count==1) a=nr;
else
if(count==2) b=nr;
else c=nr;
if(count==3)
{
list[a].pb(mp(b,c));
count=0;
}
}
}
}
//cout<<n<<" "<<m<<" "<<x<<" "<<y<<endl;
free(buffer);
fclose(in);
memset(minim,127,sizeof(minim));
q.push(x);
minim[x]=0;
while(q.size())
{
int nod=q.front();
int cost=minim[nod];
q.pop();
for(un int i=0;i<list[nod].size();++i)
{
int next_nod=list[nod][i].f;
int next_cost=list[nod][i].s;
if( minim[next_nod] > max(cost,next_cost))
{
minim[next_nod]=max(cost,next_cost);
q.push(next_nod);
}
}
}
fprintf(out,"%d",minim[y]);
// g<<minim[y];
return 0;
}