Pagini recente » Cod sursa (job #1098944) | Cod sursa (job #1589544) | Cod sursa (job #286749) | Cod sursa (job #1751543) | Cod sursa (job #1704795)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
vector<pair<int,int> > muchie[201];
int viz[201];
vector<pair<int,pair<int,int> > >h;
vector<pair<int,int> > sol;
int main()
{
ifstream f("online.in");
ofstream g("online.out");
int n,m,x,y,cost,k;
f>>n>>m;
for(int i=0;i<m;i++){
f>>x>>y>>cost;
muchie[x].push_back(make_pair(y,cost));
muchie[y].push_back(make_pair(x,cost));
}
viz[1]=1;
for(vector<pair<int,int> >::iterator i=muchie[1].begin();i<muchie[1].end();++i){
h.push_back(make_pair(1000-(*i).second,make_pair(1,(*i).first)));
}
make_heap(h.begin(),h.end());
int cT=0;
int j;
for(j=0;j<n-1;){
int c;
pair<int,pair<int,int> > th;
th=h.front();
pop_heap (h.begin(),h.end());
h.pop_back();
c=1000-th.first;
if(viz[th.second.second]==0){
viz[th.second.second]=1;
cT+=c;
for(vector<pair<int,int> >::iterator i=muchie[th.second.second].begin();i<muchie[th.second.second].end();++i){
if(viz[(*i).first]==0){
h.push_back(make_pair(1000-(*i).second,make_pair(th.second.second,(*i).first)));
push_heap(h.begin(),h.end());
}
}
j++;
}
}
g<<cT<<'\n';
f>>k;
for(int i=0;i<k;i++){
for(int i=0;i<201;i++) viz[i]=0;
h.erase(h.begin(),h.end());
cT=0;
f>>x>>y>>cost;
muchie[x].push_back(make_pair(y,cost));
muchie[y].push_back(make_pair(x,cost));
viz[1]=1;
for(vector<pair<int,int> >::iterator i=muchie[1].begin();i<muchie[1].end();++i){
h.push_back(make_pair(1000-(*i).second,make_pair(1,(*i).first)));
}
make_heap(h.begin(),h.end());
int j;
for(j=0;j<n-1;){
int c;
pair<int,pair<int,int> > th;
th=h.front();
pop_heap (h.begin(),h.end());
h.pop_back();
c=1000-th.first;
if(viz[th.second.second]==0){
viz[th.second.second]=1;
cT+=c;
for(vector<pair<int,int> >::iterator i=muchie[th.second.second].begin();i<muchie[th.second.second].end();++i){
if(viz[(*i).first]==0){
h.push_back(make_pair(1000-(*i).second,make_pair(th.second.second,(*i).first)));
push_heap(h.begin(),h.end());
}
}
j++;
}
}
g<<cT<<'\n';
}
return 0;
}