Pagini recente » Cod sursa (job #1650695) | Cod sursa (job #2717189) | Cod sursa (job #2009611) | Cod sursa (job #2112671) | Cod sursa (job #1126099)
#include<fstream>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
ifstream fin("apm2.in");
ofstream fout("apm2.out");
vector <pair <int, int> > v[10009];
int n, i, a, b, j, m, qn, viz[10009], c, cost[10009], com[100009];
queue <int> q;
struct muchie {
int n1; int n2; int l; int luat;
};
muchie vm[100000];
int cmp (muchie m1, muchie m2) {
return m1.l < m2.l;
};
void citire(){
int i;
fin >> n >> m >> qn;
for (i = 1; i <= m; i++)
fin >> vm[i].n1 >> vm[i].n2 >> vm[i].l;
}
void kruskal(){
int i, j;
sort(vm + 1, vm + m + 1, cmp);
// for (i = 1; i <= m; i++)
// fout << vm[i].n1 << " " << vm[i].n2 << " " << vm[i].l << endl;
for (i = 1; i <= n; i++)
com[i] = i;
int k = 1; i = 1;
while (k < n) {
if (com[vm[i].n1] != com[vm[i].n2]){
k++;
a = vm[i].n1; b = vm[i].n2; c = vm[i].l;
//fout << a << " " << b << " " << c << " " << endl;
v[a].push_back(make_pair(b, c));
v[b].push_back(make_pair(a, c));
int s1 = com[vm[i].n1];
int s2 = com[vm[i].n2];
for (j = 1; j <= n; j++)
if (com[j] == s1)
com[j] = s2;
}
i++;
}
}
void dfs(int nod){
viz[nod] = 1; //fout << nod << " ";
for (int j = 0; j < v[nod].size(); j++)
if (viz[v[nod][j].first] == 0){
cost[v[nod][j].first] = max(cost[nod], v[nod][j].second);
dfs(v[nod][j].first);
}
}
void bfs(int st){
int j;
for (j = 1; j <= n; j++)
cost[j] = -1;
cost[st] = 0; q.push(st);
while (!q.empty()){
int nod = q.front(); q.pop();
for (j = 0; j < v[nod].size(); j++)
if (cost[v[nod][j].first] == -1){
cost[v[nod][j].first] = max(cost[nod], v[nod][j].second);
q.push(v[nod][j].first);
}
}
// fout << cost[b] - 1;
//fout << '\n';
}
void rezolva(){
int i;
for (i = 1; i <= qn; i++){
fin >> a >> b;
for (int k = 1; k <= n; k++){
cost[k] = 0; viz[k] = 0;
}
dfs(a);
fout << cost[b] - 1 << '\n';
}
}
int main(){
citire();
kruskal();
rezolva();
}