題目如下:

這道題就是奇葩,多少有點低質量,這題不難,知識點就是鄰接矩陣,但有以下奇葩點
1.顏色的編號是1-v 不是1-k,這點卡了我一會;
2.顏色涂色可以多于3,也可以少于3(這其實正常,但如果不在意這個25分就只能得6分)
明白這兩點,再明白鄰接矩陣和map就可以做出了
代碼如下(就算沒有注釋基本沒有看不懂的吧,基本就是暴力做)
1 #include <bits/stdc++.h>//萬能頭檔案 2 using namespace std; 3 typedef long long ll;//偷懶用 4 int a[506][506];//鄰接矩陣,用來儲存邊 5 int f[506];//點的顏色編號儲存 6 map<int,int>mp; 7 int main() 8 { 9 int n,m,k; 10 cin>>n>>m>>k; 11 int x1,x2; 12 for(int i=1;i<=m;i++) 13 { 14 cin>>x1>>x2; 15 a[x1][x2]=a[x2][x1]=1;//注意是兩個,要是只有一個,后面的優化就要改變 16 } 17 int ff; 18 cin>>ff; 19 for(int j=1;j<=ff;j++) 20 { 21 int x; 22 for(int i=1;i<=n;i++) 23 { 24 cin>>x; 25 mp[x]++; 26 f[i]=x; 27 } 28 if(mp.size()!=k)//不要寫>k這點卡了我一會 29 { 30 cout<<"No"<<endl; 31 goto kf;//無條件跳轉,kf在46行 32 } 33 for(int i=1;i<=n;i++) 34 for(int j=i+1;j<=n;j++)//j=i+1 就是上面說的優化,這樣可以減少不少計算 35 { 36 if(a[i][j]) 37 { 38 if(f[i]==f[j]) 39 { 40 cout<<"No"<<endl; 41 goto kf; 42 } 43 } 44 } 45 cout<<"Yes"<<endl; 46 kf:mp.clear(); 47 } 48 return 0; 49 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/458542.html
標籤:其他
上一篇:資料結構 - AVL 樹
下一篇:盤點5款遠程控制軟體
