#乐鑫提前批笔试,第二题好气啊,忘了其中一个数据输入,结果死循环半天没发现,结束了复制到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; }
全部评论
(10) 回帖