Pagini recente » Cod sursa (job #2057758) | Cod sursa (job #880719) | Cod sursa (job #1905061) | Cod sursa (job #858992) | Cod sursa (job #1519845)
#include<cstdio>
#include<vector>
#define N 250000
#define M 500000
#define K 1000
using namespace std;
int lst[N+1];
int urm[M+1];
int vecin[M+1];
int cost[M+1];
vector<int> liste[K+1];
int k;
bool viz[N+1];
void adauga(int aux,int i){
urm[i]=lst[aux];
lst[aux]=i;
}
int schimba(int p,int &k){
p++;
while(p==liste[k].size()){
k++;
p=0;
}
return p;
}
void bfs(int x,int y){
int p,i;
k=0;
liste[k].push_back(x);
p=0;
while(viz[y]==false){
while(viz[liste[k][p]]==true) p=schimba(p,k);
x=liste[k][p];
viz[x]=true;
i=lst[x];
while(i>0){
liste[cost[i]].push_back(vecin[i]);
i=urm[i];
}
}
}
int main(){
freopen ("pscnv.in","r",stdin);
freopen ("pscnv.out","w",stdout);
int n,m,i,x,y,aux;
scanf ("%d%d%d%d",&n,&m,&x,&y);
for(i=1;i<=m;i++){
scanf ("%d%d%d",&aux,&vecin[i],&cost[i]);
adauga(aux,i);
}
bfs(x,y);
printf ("%d",k);
return 0;
}