Em chào anh, chị em có code bằng c++ bài toán tìm bậc mỗi đỉnh của đồ thị nhưng có 1 vài test case ẩn bị runtime. Em đã xử lý rất lâu mà không được, nên em lên đây để nhờ anh chị giúp ạ. Em cảm ơn.
Đề bài: Dòng đầu tiên chứa 02 số là số đỉnh và cạnh của đồ thị
Dòng tiếp theo là danh sách tên các đỉnh của đồ thị. Các dòng tiếp theo là các cạnh.
Đây là input mẫu ạ:
6 11
K R O Q H S
H R
S Q
O S
O R
S K
H S
Q O
Q H
O H
Q R
K Q
Output :2 3 4 5 4 4
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int v,e,color[1000][1000],degrees[1000];
char c[1000];
cin>>v>>e;
for (int i=0;i<v;i++){
cin>>c[i];
}
for (int i=0;i<v;i++){
for (int j=0;j<v;j++){
color[i][j]=0;
}
}
for (int j=0;j<e;j++){
char a,b;
int x,y;
cin>>a>>b;
for (int i=0;i<v;i++){
if (int(c[i])==int(a)){
x=i;
}
if (int(c[i])==int(b)){
y=i;
}
}
color[x][y]=1;
color[y][x]=1;
}
for (int i=0;i<v;i++){
degrees[i]=0;
int degree=0;
for (int j=0;j<v;j++){
if (color[i][j]==1){
degree++;
}
}
if (color[i][i]==1){
degree++;
}
degrees[i]=degree;
}
for (int i=0;i<v;i++){
cout<<degrees[i]<<" ";
}
return 0;
}