10分求助

P1983 [NOIP2013 普及组] 车站分级

Priori_Incantatem @ 2019-11-11 10:10:06

第一个点就WA了

Wrong Answer. wrong answer On line 1 column 1, read 3, expected 4.

这是第一个点:

输入:

10 4
4 1 3 5 6
3 3 5 6
3 1 5 9
5 4 5 6 7 9

正确的输出应该是4,评测姬说我输出的是3,可我本地测我的程序的确是输出的4,这究竟是什么问题?

#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
const int Maxn=1020,inf=0x3f3f3f3f;
struct _queue{
    int s[Maxn],l=1,r=0;
    inline int size(){return r-l+1;}
    inline int front(){return s[l];}
    inline void push(int x){s[++r]=x;}
    inline void pop(){l++;}
};
vector <int> e[Maxn];
int dis[Maxn],ind[Maxn];
bool g[Maxn][Maxn]; //g[i][j]表示点i与点j是否已经连边
int n,m,edgecnt,ans;
inline int read()
{
    int s=0,w=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    while(ch>='0' && ch<='9')s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
    return s*w;
}
void topo()
{
    _queue q;
    for(int i=1;i<=n;++i)
    {
        if(ind[i])continue;
        dis[i]=1;
        q.push(i);
    }
    while(q.size())
    {
        int x=q.front();
        q.pop();
        for(int i=0;i<e[x].size();++i)
        {
            int y=e[x][i];
            if(!ind[y])continue;
            ind[y]--;
            if(dis[y]<dis[x]+1)dis[y]=dis[x]+1;
            if(!ind[y])q.push(y);
        }
    }
}
int main()
{
    //freopen("in.txt","r",stdin);
    n=read(),m=read();
    for(int i=1;i<=m;++i)
    {
        int tot=read();
        bool vis[Maxn];
        for(int j=1;j<=tot;++j)
        {
            int x=read();
            vis[x]=1;
        }
        for(int j=1;j<=n;++j)
        {
            if(vis[j])continue;
            for(int k=1;k<=n;++k)
            {
                if(!vis[k] || j==k)continue;
                if(g[j][k])continue;
                e[j].push_back(k);
                ind[k]++;
                g[j][k]=1;
            }
        }
    }
    topo();
    for(int i=1;i<=n;++i)
    ans=max(ans,dis[i]);
    printf("%d\n",ans);
    return 0;
}

by fzwfzwfzw @ 2019-11-11 16:49:51

你的程序输出就是三啊


by Priori_Incantatem @ 2019-11-11 16:52:16

@一念之间、、

的确输出的是4


by fzwfzwfzw @ 2019-11-11 18:07:57

我的c++告诉我这是 三


by fzwfzwfzw @ 2019-11-11 18:09:25


by fzwfzwfzw @ 2019-11-11 18:09:50

这是图片


by LZDQ @ 2019-11-12 12:34:44

@_Wolverine vis数组每次重定义要全部归零


|