Fork me on GitHub

Uva 193 - Graph Coloring

 Graph Coloring 

找到理想的最多的黑点排布的情况,其中黑点不能相邻,而白点可以相邻,想清楚了就知道直接放黑点就行了,遇到不能放的地方不要放,可以放的地方选择放与不放,随时更新并保存理想的情况

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=129

复制代码
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cmath> 
 5 #define MAXN 110 
 6 using namespace std;
 7 int graph[MAXN][MAXN];
 8 int note[MAXN], visit[MAXN], flag[MAXN], store[MAXN];
 9 int n, _max;
10 
11 
12 int Traverse(int cur, int sum)
13 {
14     int choice = 1;
15     if(_max < sum)
16     {
17         _max = sum;
18         memcpy(store, flag, sizeof(int)*(n+1));
19     }
20     if(sum+n-cur+1 <= _max) return 0;
21     for(int i=1; i<=n; ++i)
22         if(graph[cur][i] && flag[i] != 0)
23         {
24             choice = 0;
25             break;
26         }
27     if(choice == 1)
28     {
29         flag[cur] = 1;
30         Traverse(cur+1, sum+1);
31         flag[cur] = 0;
32     }
33     Traverse(cur+1, sum);
34     return 0;
35 }
36 
37 int main()
38 {
39     #ifndef ONLINE_JUDGE
40     freopen("input.txt", "r", stdin);
41     #endif
42     int T;
43     cin>>T;
44     while(T--)
45     {
46         int k;
47         cin>>n>>k;
48         memset(graph, 0, sizeof(graph));
49         memset(flag, 0, sizeof(flag));
50         memset(store, 0, sizeof(store));
51         for(int i=0; i<k; ++i)
52         {
53             int from, to;
54             cin>>from>>to;
55             graph[from][to] = graph[to][from] = 1;
56         }
57         _max = 0;
58         Traverse(1, 0);
59         printf("%d\n", _max);
60         for(int i=1,j=0; i<=n; ++i)
61         {
62             if(store[i] != 0)
63             {
64                 if(j++ == 0) printf("%d", i);
65                 else printf(" %d", i);
66             }
67         }
68         printf("\n");
69     }
70     return 0;
71 }
复制代码

我能告诉你我错了无数遍吗?算了吧,菜鸟一个就是蛋疼!!!这次是想着减少不必要的遍历,却发现改来改去都是WA,肯定不知道哪里错了,花了一个早上的时间也算对得住它,起码自己的抗压能力又提高到了一个层次

posted @   Gifur  阅读(276)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
TOP
点击右上角即可分享
微信分享提示