POJ 1659 Frogs' Neighborhood

  题目大意:判断一个序列是否可图化。Havel-Hakimi定理的简单应用。

  在看D_Double's Journey的关于Havel-Hakimi定理时提到这道题,就做了一下。可悲的是,因为一些小细节问题WA了两次,无语...

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5 #define MAXN 12
 6 
 7 struct Vertex
 8 {
 9     int d, id;
10     bool operator < (const Vertex& v) const
11     {
12         return d > v.d;
13     }
14 };
15 Vertex vertex[MAXN];
16 int G[MAXN][MAXN], n;
17 
18 bool Havel_Hakimi()
19 {
20     for (int i = 0; i < n-1; i++)
21     {
22         sort(vertex+i, vertex+n);
23         if (i + vertex[i].d >= n)  return false;
24         int x = vertex[i].id;
25         for (int j = i+1; j <= i+vertex[i].d; j++)
26         {
27             vertex[j].d--;
28             int y = vertex[j].id;
29             G[x][y] = G[y][x] = 1;
30             if (vertex[j].d < 0)  return false;
31         }
32     }
33     if (vertex[n-1].d)  return false;
34     return true;
35 }
36 
37 int main()
38 {
39 #ifdef LOCAL
40     freopen("in", "r", stdin);
41 #endif
42     int T;
43     scanf("%d", &T);
44     while (T--)
45     {
46         scanf("%d", &n);
47         for (int i = 0; i < n; i++)
48         {
49             scanf("%d", &vertex[i].d);
50             vertex[i].id = i;
51         }
52         memset(G, 0, sizeof(G));
53         if (Havel_Hakimi())  
54         {
55             printf("YES\n");
56             for (int i = 0; i < n; i++)
57                 for (int j = 0; j < n; j++)
58                     printf("%d%s", G[i][j], (j == n-1) ? "\n" : " ");
59         }
60         else  printf("NO\n");
61         if (T)  printf("\n");
62     }
63     return 0;
64 }
View Code

 

转载于:https://www.cnblogs.com/xiaobaibuhei/p/3268583.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值