PTA团体程序设计天梯赛-L2-023 图着色问题
方法一是看了网上大神写的:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<set>
using namespace std;
const int N = 510;
int h[N],ne[N*N],e[N*N],colors[N],idx;
int v,edge,k,x,y;
set<int> color_category;
void add(int x,int y){e[idx] = y;ne[idx] = h[x];h[x] = idx++;
}
bool check(){for (int i = 1; i <= v; ++i){color_category.insert(colors[i]);int node;for (int t = h[i];t != -1; t = ne[t]){node = e[t];if (colors[node] == colors[i] || colors[node] > v || colors[node] <= 0)return false;}}if (color_category.size() != k) return false;return true;
}int main(){memset(h,-1,sizeof h);scanf("%d%d%d",&v,&edge,&k);for (int i = 0; i < edge; ++i){scanf("%d%d",&x,&y);add(x,y),add(y,x);}int test_k;scanf("%d",&test_k);while(test_k--){color_category.clear();for (int i = 1; i <= v; ++i){scanf("%d",&colors[i]);}if (check())puts("Yes");else puts("No");}return 0;
}
方法二自己写的,有一点问题:
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<map>
#include<set>
using namespace std;
int e[505][505];
int p[505];
int vis[505];
int n,m,k;
int cnt;
void init(){for(int i=0;i<=n;i++){vis[i]=0;p[i]=0;for(int j=0;j<=n;j++){e[i][j]=0;}}
}
void dfs(int x){vis[x]=1;cnt++;if(cnt==n)return ;for(int i=1;i<=n;i++){if(vis[i]==0&&e[x][i]==1){if(p[x]==p[i]){vis[i]=1;}if(p[x]!=p[i]){dfs(i);}}}
}
int dfs_1(){for(int i=1;i<=n;i++){if(vis[i]==0){dfs(i);}}if(cnt<n){return 0;}else if(cnt==n){return 1;}
}
int main(){cin>>n>>m>>k;init();set<int>st;for(int i=0;i<m;i++){int x,y;cin>>x>>y;e[x][y]=e[y][x]=1;}int y;cin>>y;for(int i=0;i<y;i++){memset(vis,0,sizeof(vis));cnt=0;st.clear();for(int j=1;j<=n;j++){cin>>p[j];if(st.find(p[j])==st.end()){st.insert(p[j]);}}int flag=0;if(st.size()>k){cout<<"No"<<endl;}else{flag=dfs_1();if(flag==0){cout<<"No"<<endl;}else{cout<<"Yes"<<endl;}} }return 0;
}
PTA团体程序设计天梯赛-L2-023 图着色问题相关推荐
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- 团体程序设计天梯赛-L2组
团体程序设计天梯赛-L2组 -------------------------------------------------------------------------------- 题目传送门 ...
- PTA团体程序设计天梯赛(L1-061~L1-070)
PTA团体程序设计天梯赛[L1-061~L1-070] L1-060 心理阴影面积 (5 分) L1-062 幸运彩票 (15 分) L1-063 吃鱼还是吃肉 (10 分) L1-064 估值一亿的 ...
- PTA团体程序设计天梯赛篇(五)---- 难题篇一(30分题目)
PTA团体程序设计天梯赛 数据结构类型 L3-002 特殊堆栈(树状数组) L3-003 社交集群(并查集) 搜索 L3-004 肿瘤诊断(三维bfs) 确保bfs只遍历一次的方法 图论 L3-005 ...
- PTA团体程序设计天梯赛-练习集(3)
PTA团体程序设计天梯赛-练习集 L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句"Hello World!"就可以 ...
- PTA团体程序设计天梯赛-练习集
PTA团体程序设计天梯赛-练习集 L1-024 后天 L1-025 正整数A+B L1-026 I Love GPLT L1-027 出租 L1-029 是不是太胖了 L1-030 一帮一 L1-03 ...
- PTA团体程序设计天梯赛-练习集Level-1(参考代码C语言/Python版)
本题目集截止到2022年天梯赛 受个人水平限制,<PTA团体程序设计天梯赛-练习集>中暂时只能把Level-1的题目做出来(也许有些Level-2的题可以写出来?)-我不是专门搞竞赛的,参 ...
- PTA团体程序设计天梯赛(L1-031~L1-040)
PTA团体程序设计天梯赛[L1-031~L1-040] L1-031 到底是不是太胖了 (10 分) L1-032 Left-pad (20 分) L1-033 出生年 (15 分) L1-034 点 ...
- PTA|团体程序设计天梯赛-练习题库集
文章目录 关于爬取脚本的编写 L1-001 Hello World! (5 分) L1-002 打印沙漏 (15 分) L1-003 个位数统计 (15 分) L1-004 计算摄氏温度 (5 分) ...
- 团体程序设计天梯赛 L2 题目合集
前言 发现自己还能再参加一次天梯赛,在高兴之余,决定把在赛前将所有的天梯赛真题过一遍,希望自己可以取得理想的成绩.目前 L1 的题目已经刷完,打算在赛前刷完 L2 的题目. 本来想 L2 的题目都写个 ...
最新文章
- Java基础篇:内部类详解
- java的集合应用_Java之集合类应用总结
- 使用jdbc执行SQL实现登录查询2-避免SQL注入版
- 冻结行_Excel如何冻结窗口
- 三年亏了近50亿,网易云音乐终于熬到上市了
- 我的YUV播放器MFC小笔记:设置picture控件背景为黑色、窗口缩放
- 谷歌语音识别功能Live Transcribe,让AI帮助语言障碍者“说话”
- 离散数学之数理逻辑01
- Authorware 函数说明
- 恶意代码防范技术原理-计算机病毒和特洛伊木马分析与防护
- 华为Smartkit CRU和FRU工具使用教程
- 安鸾靶场--暴力破解
- 曲线曲面基本理论(二)
- 如何设计网页排版和样式 - 前端页面设计
- Sentinel SuperPro/UltraPro Monitor v2.01
- 国家开放大学计算机基础应用型题一,国家开放大学(电大)《计算机应用基础》上机网考常考操作题及步骤...
- 几招搞定Windows 7累计补丁包的安装
- 暑期实训CPU设计(四)
- VS2017+MFC+sqlite数据库操作
- JAVA:实现Aliquot Sum等分总和算法(附完整源码)