百度笔试914,运维开发第二题
百度笔试914,运维开发第二题代码
#include <iostream> #include<vector> using namespace std; int main() { int output; vector<vector<int> > res; vector<vector<char> > contain; int n, m; int min, max; cin >> n >> m; char query; for (int i = 0; i < m; i++) { vector<char> con1; for (int j = 0; j < 3; j++) { cin >> query; con1.push_back(query); } contain.push_back(con1); } for (int i = 0; i < n; i++) { vector<int> con; int temp; con.push_back(i + 1); con.push_back(i+1); res.push_back(con); } //截至到这里都是在存储输入数据,下面对输入进行处理; //分两种情况,一个是发指令,一个是询问。 int a, b; for (int i = 0; i < m; i++) { if (contain[i][0] == 'C') { a = int(contain[i][1]-'0'); b = int(contain[i][2]-'0'); for (int i = 1; i < res[a - 1].size(); i++) { res[b - 1].push_back(res[a - 1][i]); } } else if(contain[i][0] == 'Q') { output = -1; max = min = 0; a = int(contain[i][1]-'0'); b = int(contain[i][2]-'0'); for (int j = 0; j < n; j++) { if (res[j].size() != 2) { for (int i = 1; i < res[j].size(); i++) { if (res[j][i] == a) min = i; else if (res[j][i] == b) max = i; if (min != 0 && max != 0) output= abs(min - max)-1; } if (output != -1) { cout << output << endl; break; } } if (j == n - 1) cout << -1 << endl; } } } return 0; }第一题暴力查找,时间超限制,求简便方法#笔试题目##百度#