Cod sursa(job #3369909)

Utilizator viflaem2Granat Andrei Ionut viflaem2 Data 22 octombrie 2026 13:25:48
Problema Arbore partial de cost minim Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");

int main()
{
int n,m; f>>n>>m;
long long costT=0;
priority_queue<tuple<int,int,int>> pq; //cost,nod,parinte
vector<vector<tuple<int,int>>> graf(n+1); //nod,cost
vector<tuple<int,int>> sol;
vector<bool> vizitat(n+1,0);
for(int i=0;i<m;i++){
    int x,y,c; f>>x>>y>>c;
    graf[x].push_back({y,c});
    graf[y].push_back({x,c});
}
pq.push({0,1,0});
while(pq.size()){
    auto [c,n,p]=pq.top();
    pq.pop();
    c=-c;
    if(vizitat[n])
        continue;
    vizitat[n]=1;
    costT+=c;
    if(p!=0)
        sol.push_back({p,n});
    for(int i=0;i<graf[n].size();i++){
        auto [muchie,cost]=graf[n][i];
        pq.push({-cost,muchie,n});
    }
}
g<<costT<<endl<<sol.size()<<endl;
for(int i=0; i<sol.size(); i++){
    auto [x,y]=sol[i];
    g<<x<<" "<<y<<endl;
}
return 0;
}