1. 程式人生 > >【PAT-一道看著很難的水題】L2-023. 圖著色問題

【PAT-一道看著很難的水題】L2-023. 圖著色問題

pre math urn 問題 png info scan 水題 image

技術分享圖片

水題!沒其他想說的,還以為可以搞點高大上的搜索呢!十五分鐘,暴力兩重循環就OK了!

代碼如下:

技術分享圖片
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<vector>
#include<map>
#define maxn 400000
#define  inf 0x3f3f3f3f  //l2-023;
using namespace std; int n,m,k; #define N 505 int a[N][N];//鄰接矩陣 int main(){ while(scanf("%d%d%d",&n,&m,&k)!=EOF){ memset(a,0,sizeof(a)); int s,d; for(int i=1;i<=m;i++){ scanf("%d%d",&s,&d); a[s][d]=a[d][s]=1; }
int q,c; scanf("%d",&q); while(q--){ int num=n,vis[N]={0},color[N]={0};//判斷顏色種類數是否超過K for(int i=1;i<=n;i++){ scanf("%d",&c); vis[c]++; if(vis[c]>1)num--; color[i]=c; }
if(num!=k){//第一次寫的是num>k —— WA了一個樣例! printf("No\n"); }else{ int flag=0; for(int i=1;i<=n&&!flag;i++){ for(int j=1;j<=n&&!flag;j++){ if(i!=j&&a[i][j]==1){ if(color[i]==color[j]){ flag=1;break; } } } } if(flag)printf("No\n"); else printf("Yes\n"); } } } return 0; }
View Code

【PAT-一道看著很難的水題】L2-023. 圖著色問題