xiaolou @ 2019-10-07 18:45:11
萌新好久没求助了,今天又来求助。。。
感觉写的莫得问题,然而莫得分数。。。
各位省队大爷帮着看看呗/kk
#include <bits/stdc++.h>
using namespace std;
int n,m;
int k,x;
struct Node
{
int v;
Node *next;
}*h[1005],pool[1000005];
int f[1005];
int vis[1005];
int in[1005];
int cnt=0;
priority_queue <int> q;
void Adde(int u,int v)
{
Node *p=&pool[++cnt];
p->v=v;
p->next=h[u];
h[u]=p;
}
void Work(int u,int sum)
{
cout << u << " " << sum <<endl;
q.push(sum);
vis[u]=1;
for(Node *p=h[u];p;p=p->next)
{
in[p->v]--;
if(in[p->v]==0)
{
Work(p->v,sum+1);
}
}
}
int main()
{
scanf("%d%d",&n,&m);
while(m--)
{
memset(f,0,sizeof(f));
scanf("%d",&k);
scanf("%d",&x);
int srt=x,end;
k--;
while(k--)
{
scanf("%d",&x);
f[x]=1;
}
end=x;
for(int i=srt+1;i<end;++i)
{
if(f[i]==0)
{
Adde(i,srt);
Adde(i,end);
in[srt]++;
in[end]++;
}
}
}
for(int i=1;i<=n;++i)
{
if(vis[i]==0&&in[i]==0)
{
Work(i,1);
}
}
printf("%d",q.top());
return 0;
}
by ousuimei_68 @ 2019-10-07 19:02:17
膜神娄钰
by xiaolou @ 2019-10-07 19:05:30
@ousuimei_68 ???别奶我啊,康一下呗
by ousuimei_68 @ 2019-10-07 19:27:26
@xiaolou
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int n,m,ans,tot;
int a[1050],t,dep[1050],in[1050],p[1050],map[1050][1050];
struct link
{
int v;
link *next;
}edge[3000050],*head[3000050];
void sorting()
{
queue <int> q;
for (int i=1;i<=n;i++)
if (in[i]==0)
{
q.push(i);
dep[i]=1;
}
while(q.empty()==false)
{
int ber=q.front();
q.pop();
for (link *p=head[ber];p;p=p->next)
{
int berr=p->v;
dep[berr]=dep[ber]+1;
ans=max(dep[berr],ans);
in[berr]--;
if (in[berr]==0)
q.push(berr);
}
}
}
void add(int u,int v)
{
edge[++tot].v=v;
edge[tot].next=head[u];
head[u]=&edge[tot];
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
{
memset(a,0,sizeof(a));
memset(p,0,sizeof(p));
scanf("%d",&t);
for (int j=1;j<=t;j++)
{
scanf("%d",&a[j]);
p[a[j]]++;
}
for (int j=a[1]+1;j<=a[t];j++)
{
if (p[j]==0)
{
for (int k=1;k<=t;k++)
{
int g=a[k];
if (map[j][g]==0)
{
in[g]++;
add(j,g);
map[j][g]++;
}
}
}
}
}
sorting();
printf("%d\n",ans);
return 0;
}
送你份代码康康