Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <cstdio>
  6. #include <ctime>
  7. #define INF 200000000;
  8. using namespace std;
  9. char a[3001][3001];
  10. char res[3001][3001];
  11. int N,M,pr[3001];
  12. char qw[3001];
  13. void prim(int start) {
  14. int n;
  15. int key[3001];
  16. char Q[3001];
  17. int amountInQ=N;
  18. for (int u=0; u<N; u++) {
  19. key[u]=INF;
  20. pr[u]=-1;
  21. Q[u]=1;}
  22. int u,v;
  23. key[start]=0;
  24. while (amountInQ) {
  25. int min=INF;
  26. for (int i=0; i<N; i++) if (Q[i] && key[i]<min) {
  27. u=i; min=key[i]; }
  28. Q[u]=0; amountInQ--;
  29. for (int v=0; v<N; v++)
  30. if (a[u][v]!=0 && Q[v] && a[u][v]<key[v]) {
  31. pr[v]=u;
  32. key[v]=a[u][v]; } }
  33. for (int i=0; i<N; i++)
  34. for (int j=0; j<N; j++) res[i][j]=0;
  35. for (int i=0; i<N; i++)
  36. if (pr[i]!=-1) {
  37. res[i][pr[i]]=1;
  38. res[pr[i]][i]=1; } }
  39. void kek(int u) {
  40. qw[u]=1;
  41. for (int v=0; v<N; v++)
  42. if (a[u][v] && qw[v]==-1)
  43. kek(v);printf("%d\n",u+1);}
  44. int main()
  45. { scanf("%d%d",&N,&M);
  46. int i,x,y;
  47. for (i=0; i<M; i++) {
  48. scanf("%d%d",&x,&y);
  49. a[--x][--y]=1;
  50. a[y][x]=1; }
  51. prim(0);
  52. for (i=0; i<N; i++) qw[i]=-1;
  53. kek(0); return 0;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement