Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <vector>
- #include <algorithm>
- #include <cstdio>
- #include <ctime>
- #define INF 200000000;
- using namespace std;
- char a[3001][3001];
- char res[3001][3001];
- int N,M,pr[3001];
- char qw[3001];
- void prim(int start) {
- int n;
- int key[3001];
- char Q[3001];
- int amountInQ=N;
- for (int u=0; u<N; u++) {
- key[u]=INF;
- pr[u]=-1;
- Q[u]=1;}
- int u,v;
- key[start]=0;
- while (amountInQ) {
- int min=INF;
- for (int i=0; i<N; i++) if (Q[i] && key[i]<min) {
- u=i; min=key[i]; }
- Q[u]=0; amountInQ--;
- for (int v=0; v<N; v++)
- if (a[u][v]!=0 && Q[v] && a[u][v]<key[v]) {
- pr[v]=u;
- key[v]=a[u][v]; } }
- for (int i=0; i<N; i++)
- for (int j=0; j<N; j++) res[i][j]=0;
- for (int i=0; i<N; i++)
- if (pr[i]!=-1) {
- res[i][pr[i]]=1;
- res[pr[i]][i]=1; } }
- void kek(int u) {
- qw[u]=1;
- for (int v=0; v<N; v++)
- if (a[u][v] && qw[v]==-1)
- kek(v);printf("%d\n",u+1);}
- int main()
- { scanf("%d%d",&N,&M);
- int i,x,y;
- for (i=0; i<M; i++) {
- scanf("%d%d",&x,&y);
- a[--x][--y]=1;
- a[y][x]=1; }
- prim(0);
- for (i=0; i<N; i++) qw[i]=-1;
- kek(0); return 0;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement