Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int N = 5;
- int graf[N][N]=
- {
- { 0, 2, 4,-1, 6},
- { 2, 0, 1, 3,-1},
- { 4, 1, 0, 1, 2},
- {-1, 3, 1, 0, 1},
- { 6,-1, 2, 1, 0}
- };
- int poprzednik[N];
- int key[N];
- bool odwiedzony[N];
- int Q=N;
- int mini()
- {
- int mini;
- int minik=32728;
- for(int i=0; i < N ; i++)
- {
- if(!odwiedzony[i]&&minik>key[i])
- {
- minik = key[i];
- mini=i;
- }
- }
- odwiedzony[mini]=1;
- return mini;
- }
- void prim(int s)
- {
- for(int i =0 ; i < N ; i++)
- key[i]=32728;
- poprzednik[s]=-2;
- key[s]=0;
- while(Q>0)
- {
- --Q;
- int u = mini();
- for(int i = 0; i<N; i++)
- {
- if(graf[u][i]>0)
- {
- if(odwiedzony[i]==0&&key[i]>graf[u][i])
- {
- poprzednik[i]=u;
- key[i]=graf[u][i];
- }
- }
- }
- }
- }
- int main()
- {
- int s;
- cin>>s;
- --s;
- prim(s);
- for(int i=0; i<N; i++)
- cout<<"i: " <<i+1<<" poprzednik: "<<poprzednik[i]+1<<" key: "<<key[i]<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement