乐鑫提前批笔试
#乐鑫提前批笔试,第二题好气啊,忘了其中一个数据输入,结果死循环半天没发现,结束了复制到ide上才发现,被自己蠢哭了。。。
贴个代码,不知道对不对,可以讨论下
输入 :
第1行项目个数 n
后n行:n各项目需要的时间 ti
后面1行 :关联数目m
面m行 :每行都是两个数 qi,hi,项目qi完成了之后,项目hi才能进行
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int n;
while (cin >> n) {
vector<int> ti; //存储还需要的时间
int temp;
for (int i = 0; i < n; i++) {
cin >> temp;
ti.push_back(temp);
}
vector<vector<int>> link(n); //用于储存关联porject
int m;
cin >> m;
for (int i = 0; i < m; i++) {
int qi, hi;
cin >> qi >> hi;
link[hi].push_back(qi);
}
int ans = 0; //储存时间
while (count(ti.begin(), ti.end(), 0) != n) //每次循环,能进行的项目时间全部减一,全部时间为0,则退出循环
{
ans++; //time +1;
vector<int> ti_tmep(ti.begin(), ti.end());
for (int i = 0; i < n; i++) {
int j = 0;
for (j = 0; j < link[i].size(); j++) //看关联项目是否完成
{
if (ti_tmep[link[i][j]] != 0) { //关联的项目是否完成
break;
}
}
if (j == link[i].size() && ti[i] != 0) ti[i]--;
}
}
cout << ans;
}
return 0;
} #乐鑫提前批笔试##C/C++#

