Pagini recente » Cod sursa (job #1804030) | Cod sursa (job #774108) | Cod sursa (job #2788862) | Cod sursa (job #2157794) | Cod sursa (job #2869328)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prim.in");ofstream g("prim.out");
int a[105][105],n,m,x,y,c,s[105],v[105],mn,p,nr,vf[105],S;
void prim(int x)
{
v[x]=1;
vf[++nr]=x;
s[x]=0;
for(int k=1;k<n;k++)
{
mn=1001;
for(int i=1;i<=nr;i++)
{
for(int j=1;j<=n;j++)
{
if(!v[j] && a[vf[i]][j]<mn)
{
mn=a[vf[i]][j];
p=j;y=vf[i];
}
}
}
s[p]=y;
v[p]=1;
vf[++nr]=p;
S+=mn;
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i!=j)a[i][j]=1005;
}
}
for(int i=1;i<=m;i++)
{
f>>x>>y>>c;
a[x][y]=a[y][x]=c;
}
prim(1);
g<<S<<'\n'<<n-1<<'\n';
for(int i=1;i<=n;i++)
{
if(s[i]!=0)g<<i<<" "<<s[i]<<'\n';
}
return 0;
}