Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream f("date.in");
- int a[50][50], q[50], h[50], n, r;
- const int vmax = 5000;
- void init_mc()
- {
- f>>n;
- for(int i=1; i<=n; i++)
- for(int j=1; j<=n; j++)
- if(i != j)
- a[i][j] = vmax;
- }
- void citire_mc()
- {
- int i, j, c;
- while(f>>i>>j>>c)
- {
- a[i][j] = c;
- a[j][i] = c;
- }
- }
- void init_q()
- {
- //int mini = vmax;
- for(int i=1; i<=n; i++)
- if(i != r)
- q[i] = 1;
- }
- int muchie()
- {
- int mini = vmax, j;
- for(int i=1; i<=n; i++)
- if(q[i] != 0 && a[q[i]][i] < mini)
- {
- mini = a[q[i]][i];
- j=i;
- }
- return j;
- }
- void ac(int j)
- {
- for(int i=1; i<=n; i++)
- if(q[i] != 0 && a[i][q[i]] > a[i][j])
- q[i] = j;
- }
- void afis()
- {
- cout<<"APM este format din muchiile: "<<'\n';
- for(int i=1; i<=n; i++)
- if(h[i] != 0)
- cout<<"["<<h[i]<<", "<<i<<"] ";
- }
- int main()
- {
- int j, k=0, ct=0;
- init_mc();
- citire_mc();
- cout<<"Nodul initail: "; cin>>r;
- init_q();
- while(k < n-1)
- {
- j = muchie();
- h[j] = q[j];
- ct += a[q[j]][j];
- q[j] = 0;
- ac(j);
- k++;
- }
- cout<<ct<<" "<<endl;
- afis();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement