记录编号 24653 评测结果 AWWWWWWWWAWWWWWAA
题目名称 牛棚的灯 最终得分 23
用户昵称 Gravatarmagic 是否通过 未通过
代码语言 C++ 运行时间 0.009 s
提交时间 2011-04-13 10:37:49 内存使用 0.26 MiB
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdio>
  3. #define light_max 36
  4. struct light
  5. {
  6. bool flag;
  7. int connect[light_max];
  8. int pos;
  9. int times;
  10. };
  11. light data[light_max];
  12. int n,m,maxer;
  13. int ans=10000000;
  14. using namespace std;
  15. void dfs(int p);
  16. void change(int q);
  17. void change2(int q);
  18. void make(int i);
  19. void make(int i)
  20. {
  21. if (data[i].flag==0) data[i].flag=1;else data[i].flag=0;
  22. }
  23. bool success();
  24. void change(int q)
  25. {
  26. int j;
  27. make(q);
  28. data[q].times++;
  29. for (j=1;j<=data[q].pos;j++)
  30. {
  31. make(data[q].connect[j]);
  32. data[data[q].connect[j]].times++;
  33. }
  34. }
  35. void change2(int q)
  36. {
  37. int j;
  38. make(q);
  39. data[q].times--;
  40. for (j=1;j<=data[q].pos;j++)
  41. {
  42. make(data[q].connect[j]);
  43. data[data[q].connect[j]].times--;
  44. }
  45. }
  46. bool success()
  47. {
  48. int w;
  49. for (w=1;w<=n;w++)
  50. {
  51. if (data[w].flag==false)
  52. {
  53. return (0);
  54. }
  55. }
  56. return (1);
  57. }
  58. void dfs(int p)
  59. {
  60. int i;
  61. if ((!data[p].flag)&&(data[p].times<1))
  62. {
  63. change(p);
  64. maxer++;
  65. if (success())
  66. {
  67. if (ans>maxer)
  68. ans=maxer;
  69. }
  70. for (i=1;i<=n;i++)
  71. {
  72. dfs(i);
  73. }
  74. change2(i);
  75. maxer--;
  76. //printf("%d%s",maxer," ");
  77. }
  78. }
  79. int main()
  80. {
  81. int k,a,b;
  82. freopen("lights.in","r",stdin);
  83. freopen("lights.out","w",stdout);
  84. scanf("%d%d",&n,&m);
  85. memset(data,0,sizeof(data));
  86. for (k=1;k<=m;k++)
  87. {
  88. scanf("%d%d",&a,&b);
  89. data[a].pos++;
  90. data[a].connect[data[a].pos]=b;
  91. data[b].pos++;
  92. data[b].connect[data[b].pos]=a;
  93. }
  94. for (k=1;k<=n;k++)
  95. {
  96. dfs(k);
  97. }
  98. printf("%d",ans);
  99. return 0;
  100. }