社区讨论
萌新玄关求助P1113 杂务
学术版参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lz6eczcx
- 此快照首次捕获于
- 2024/07/29 10:55 2 年前
- 此快照最后确认于
- 2024/07/29 11:59 2 年前
为什么
CPP#include <bits/stdc++.h>
using namespace std;
int n,id,tim[50001],du[50001],ans,anss[50001];
struct ff
{
int nd,len;
};
vector<int> vec[50001];
queue<ff> q;
int main()
{
cin>>n;
for(int i = 1; i <= n; i++)
{
cin>>id>>tim[i];
int t;
while(cin>>t)
{
if(t == 0) break;
vec[t].push_back(i);
du[i]++;
}
}
for(int i = 1; i <= n; i++)
if(du[i] == 0)
{
q.push({i,tim[i]});
anss[i] = tim[i];
}
while(q.size())
{
int t = q.size();
for(int i = 1; i <= t; i++)
{
ff tt = q.front();
ans = max(ans,tt.len);
for(int j = 0; j < vec[tt.nd].size(); j++)
{
int ttt = vec[tt.nd][j];
du[ttt]--;
anss[ttt] = max(anss[ttt],anss[tt.nd] + tim[ttt]);
if(du[ttt] == 0) q.push({ttt,tim[ttt] + tt.len});
//cout<<tim[ttt] + tt.len<<' ';
}
q.pop();
}
}
sort(anss + 1,anss + 1 + n);
cout<<anss[n];
return 0;
}
上述能AC
而以下代码
CPP#include <bits/stdc++.h>
using namespace std;
int n,id,tim[50001],du[50001],ans;
struct ff
{
int nd,len;
};
vector<int> vec[50001];
queue<ff> q;
int main()
{
cin>>n;
for(int i = 1; i <= n; i++)
{
cin>>id>>tim[i];
int t;
while(cin>>t)
{
if(t == 0) break;
vec[t].push_back(i);
du[i]++;
}
}
for(int i = 1; i <= n; i++)
if(du[i] == 0)
q.push({i,tim[i]});
while(q.size())
{
int t = q.size();
for(int i = 1; i <= t; i++)
{
int tt = q.front().nd;
ans = max(ans,q.front().len);
for(int j = 0; j < vec[tt].size(); j++)
{
int ttt = vec[tt][j];
du[ttt]--;
if(du[ttt] == 0) q.push({ttt,tim[ttt] + q.front().len});
}
q.pop();
}
}
cout<<ans;
return 0;
}
才20分?
这里的答案为什么非要用数组储存啊QwQ
回复
共 0 条回复,欢迎继续交流。
正在加载回复...