社区讨论
求助各位大佬
学术版参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi7xp2h3
- 此快照首次捕获于
- 2025/11/21 05:19 4 个月前
- 此快照最后确认于
- 2025/11/21 05:19 4 个月前
洛谷P1983,代码玄学过不了样例,大佬看一下
CPP//洛谷P1983
#include<bits/stdc++.h>
using namespace std;
int a[1001],rd[1001],ind[1001],que[100001];
bool used[1001];
vector<int> s[1001];
int dp[1001];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
memset(used,false,sizeof(used));
int S;
cin>>S;
for(int i=1;i<=S;i++)
{
scanf("%d",&a[i]);
used[a[i]]=true;
}
for(int i=1;i<=S;i++)
{
for(int j=1;j<=n;j++)
{
if(!used[j])
{
s[i].push_back(j);
}
}
}
for(int i=1;i<=n;i++)
if(!used[i])
ind[i]++;
}
for(int i=1;i<=n;i++)
{
cout<<ind[i]<<" ";
}
puts("");
//图已经建好,拓扑排序
int head=0,tail=0;
for(int i=1;i<=n;i++)
{
if(!ind[i])
que[tail++]=i;
}
while(head<tail)
{
int t;
t=que[head];
head++;
ind[t]--;
for(int i=0;i<s[t].size();i++)
{
dp[s[t][i]]=max(dp[s[t][i]],dp[t]+1);
if(!--ind[s[t][i]]) que[tail++]=s[t][i];
}
}
int maxx=0;
for(int i=1;i<=n;i++)
{
cout<<dp[i]<<endl;
}
cout<<maxx<< endl;
return 0;
}
在线等,谢谢
回复
共 1 条回复,欢迎继续交流。
正在加载回复...