救救我.py

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll s[1005], o[1005], in[1005], dp[1005], d[1005];
vector<ll> v[1005]; 
int main(){
    ll n, m;
    cin >> n >> m;
    for(ll i=1;i<=m;i++){
        ll k;
        cin >> s[i];
        // memset(m, 0, sizeof(m));
        for(ll j=1;j<=s[i];j++){
            cin >> d[i];
        }
        ll idx=1;
        for(ll j=1;j<=n;j++){
            if(j!=d[idx]){
                idx++;
                v[i].push_back(j);
                in[j]++;
                o[i]++;
            }
            else{
                v[j].push_back(i);
                in[i]++;
                o[j]++;
            }
        }
    }
    queue<ll> q;
	for(ll i=1;i<=n;i++){
		if(in[i]==0){
            dp[i]=1;
			q.push(i);
		}
	}
	while(!q.empty()){
		ll u=q.front();
		q.pop();
		for(ll k:v[u]){	
            in[k]--;
            dp[k]=max(dp[u]+1,dp[k]);
			if(in[k]==0) q.push(k);
		} // 不用vis数组!!!!
	}
    ll ans=0;
    for(ll i=1;i<=n;i++){
        if(o[i]==0){
            ans=max(dp[i], ans);
        }
    }
    cout << ans/2+1;
}

image
image
WA0分,救救我!!

这题我现在都还RE15。

我来

我A了

image
@HIM 建边有问题

哪里有问题??

1 个赞

你这个建边有问题,我稍微给一个可行方法:

		//输入到站车辆,并用vis数组标记
		/*从第一辆进站的车遍历到最后一辆*/{
			//到站的不算,跳过
			/*枚举到站车辆*/{
				if(!l[i][a[j]]){//如果没建边 (因为我们是需要从没到站的向到站的建边,题目说等级更高的一定进站,即是高级的指向低级的)
					//低级的站台入度+1 
					//用vector建边
					//标记已建边
                }
            }
         }

@HIM 在吗?

在在,刚才在补题

要出去运动了,我回来再补

输入到站车辆是啥意思

@吴梓峤 ??

不是不能发题解吗

嗯?他不是题目里有吗?

哦,写错了

应该是列车到的站

欧,我接着填

题解可以发,不能发AC代码

而且这也没发题解啊,

对的