Advertisement
a53

partial

a53
Jan 2nd, 2017
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. #include <fstream>
  2. #define DMAX 210
  3.  
  4. using namespace std;
  5.  
  6. ifstream fin("partial.in");
  7. ofstream fout("partial.out");
  8.  
  9. int n, a, b, elim, ic, sc, C[DMAX], newM[DMAX][DMAX];
  10. bool M[DMAX][DMAX], viz[DMAX];
  11.  
  12. int main()
  13. {
  14. int i, j, acum;
  15. fin >> n;
  16. while (fin >> a >> b)
  17. M[a][b] = M[b][a] = 1;
  18. for (i = 1; i <= n; i++)
  19. {
  20. for (j = i + 1; j <= n; j++)
  21. {
  22. if (M[i][j])
  23. elim++;
  24. }
  25. }
  26. elim /= 2;
  27. ic = 0;
  28. sc = -1;
  29. C[++sc] = 1;
  30. while (ic <= sc)
  31. {
  32. acum = C[ic++];
  33. for (i = 1; i <= n; i++)
  34. {
  35. if (M[acum][i])
  36. {
  37. if (!viz[i])
  38. {
  39. viz[i] = 1;
  40. C[++sc] = i;
  41. newM[acum][i] = newM[i][acum] = 1;
  42. }
  43. else
  44. {
  45. if (elim && !newM[acum][i])
  46. {
  47. elim--;
  48. newM[acum][i] = newM[i][acum] = -1;
  49. }
  50. else if (newM[acum][i] != -1 && newM[i][acum] != -1)
  51. newM[acum][i] = newM[i][acum] = 1;
  52. }
  53. }
  54. }
  55. }
  56. for (i = 1; i <= n; i++)
  57. {
  58. for (j = 1; j <= n; j++)
  59. {
  60. if (newM[i][j] == -1)
  61. newM[i][j] = 0;
  62. fout << newM[i][j] << ' ';
  63. }
  64. fout << '\n';
  65. }
  66. fout.close();
  67. return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement