Pagini recente » Cod sursa (job #1302028) | Cod sursa (job #1583990) | Cod sursa (job #236138) | Cod sursa (job #1185333) | Cod sursa (job #7271)
Cod sursa(job #7271)
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
struct ncon{int v,l;};
class predn{public:
int operator()(const ncon&a,const ncon&b){
return a.l>b.l;
}
};
int n,m,k;
vector<vector<ncon> > mvei;
FILE*fi,*fo;
void inputFunc(){
fi=fopen("radiatie.in","r");fo=fopen("radiatie.out","w");
fscanf(fi,"%d %d %d", &n, &m, &k);
mvei.assign(n, vector<ncon>());
for(int i=0;i<m;i++){
int a,b,c;fscanf(fi,"%d %d %d",&a,&b,&c);a--,b--;
ncon aux;aux.l=c;
aux.v=a;mvei[b].push_back(aux);
aux.v=b;mvei[a].push_back(aux);
}
}
void outputFunc(){fclose(fi);fclose(fo);}
int main(){
inputFunc();
for(int i=0;i<k;i++){
int st,en;fscanf(fi,"%d %d",&st,&en);st--,en--;
vector<int> viz(n,-1);viz[st]=0;
priority_queue<ncon,vector<ncon>,predn> qu;
for(int j=0;j<mvei[st].size();j++)qu.push(mvei[st][j]);
while(!qu.empty()){
ncon p=qu.top();qu.pop();
if(viz[p.v]==-1 || viz[p.v]>p.l){
viz[p.v]=p.l;
for(int j=0; j<mvei[p.v].size(); j++){
ncon nx=mvei[p.v][j];
if(nx.l<p.l)nx.l=p.l;
qu.push(nx);
}
}
}
fprintf(fo,"%d\n",viz[en]);
}
outputFunc();
return 0;
}