用AOE求出每个杂物完成的最早时间来做为什么只有10分,其它全WA,求大佬指点

P1113 杂务

@[BCDL](/user/275807) 不发代码我怎么帮你?
by OldDriverTree @ 2023-11-18 10:40:43


#include<iostream>``` #include<iostream> #include<vector> using namespace std; int n; struct node { int v; node* next; }; struct vertex { int v; int time; node* parents; }; int max1(vector<vertex>edge, vector<int>ve, int v) {//完成事件v所需要的最早时间 int length = 0; node* p = edge[v].parents; //if (p == NULL)length = edge[v].time; while (p != NULL) { if (length < edge[p->v].time + ve[p->v])length = edge[p->v].time + ve[p->v]; p = p->next; } return length; } int main() { cin >> n; vector<vertex>a(n + 1); vector<int>ve(n + 1); int i; int v, v1; for (i = 1; i <= n; i++) { cin >> v; cin >>a[i].time; a[i].v = v; a[v].parents = NULL; while (cin >> v1) { if (v1 == 0)break; else { node* p; p = new node; p->v = v1; p->next = a[v].parents; a[v].parents = p; } } } ve[0] = ve[1] = 0; for (i = 2; i <= n; i++) { ve[i] = max1(a, ve, i); } cout << ve[n] + a[n].time; for (i = 1; i <= n; i++) { node* p,*q; p = new node; p = a[i].parents; q = NULL; while (p != NULL) { q = p; p = p->next; delete q; } } a.clear(); ve.clear(); } ``` #include<vector> using namespace std; int n; struct node { int v; node* next; }; struct vertex { int v; int time; node* parents; }; int max1(vector<vertex>edge, vector<int>ve, int v) {//完成事件v所需要的最早时间 int length = 0; node* p = edge[v].parents; //if (p == NULL)length = edge[v].time; while (p != NULL) { if (length < edge[p->v].time + ve[p->v])length = edge[p->v].time + ve[p->v]; p = p->next; } return length; } int main() { cin >> n; vector<vertex>a(n + 1); vector<int>ve(n + 1); int i; int v, v1; for (i = 1; i <= n; i++) { cin >> v; cin >>a[i].time; a[i].v = v; a[v].parents = NULL; while (cin >> v1) { if (v1 == 0)break; else { node* p; p = new node; p->v = v1; p->next = a[v].parents; a[v].parents = p; } } } ve[0] = ve[1] = 0; for (i = 2; i <= n; i++) { ve[i] = max1(a, ve, i); } cout << ve[n] + a[n].time; for (i = 1; i <= n; i++) { node* p,*q; p = new node; p = a[i].parents; q = NULL; while (p != NULL) { q = p; p = p->next; delete q; } } a.clear(); ve.clear(); }
by BCDL @ 2023-11-22 14:58:49


@[OldDriverTree](/user/681036) 开始没研究清楚怎么发代码……?‍
by BCDL @ 2023-11-22 15:00:46


|