第四题: int gcd(int a, int b) {     if (a < b)         swap(a, b);     if (a % b == 0)         return b;     else         return gcd(b, a % b); } int main() {     int n;     cin >> n;     vector<int> candy(n);     for (int i = 0; i < n; i++)         cin >> candy[i];     vector<vector<int>> neigh(n);     for (int i = 0; i < n; i++) {         for (int j = i + 1; j < n; j++) {             if (gcd(candy[i], candy[j]) > 1) {                 neigh[i].push_back(j);                 neigh[j].push_back(i);             }         }     }     vector<bool> flag(n, false);     int res = 0;     for (int i = 0; i < n; i++) {         if (flag[i] == false) {             int sum = 0;             queue<int> q;             q.push(i);             flag[i] = true;             while (!q.empty()) {                 int cur = q.front();                 sum++;                 q.pop();                 for (int j = 0; j < neigh[cur].size(); j++) {                     if (flag[neigh[cur][j]] == false) {                         q.push(neigh[cur][j]);                         flag[neigh[cur][j]] = true;                     }                 }             }             res = max(res, sum);         }     }     cout << res << endl;     system("pause");     return 0; }
点赞 评论

相关推荐

_mos_:要不是看评论区我都不知道你要找的是数分
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务