Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
52299 Cidoai 子网 C++ 解答错误 20 19 MS 3412 KB 1329 2022-07-19 11:51:55

Tests(4/20):


#include<cstdio> #include<queue> using namespace std; typedef long long ll; int n,m; int k[4405],c[4405][42]; int net[4405]; int used[8005],vis[8005],ans; struct node{ int num,pos; friend bool operator <(node x,node y){ return x.num>y.num; } }; priority_queue<node> q[8005],g; int main(){ // freopen("subnet.in","r",stdin); scanf("%d%d",&n,&m); for(int i=1;i<=m;++i){ scanf("%d",k+i); for(int j=1;j<=k[i];++j){ scanf("%d",&c[i][j]); q[c[i][j]].push(node{k[i],i}); vis[c[i][j]]++; } } for(int i=1;i<=n;++i) g.push(node{vis[i],i}); while(!g.empty()){ node h=g.top(); int u=h.pos; g.pop(); if(vis[u]!=h.num||vis[u]==0||used[u]) continue; while(!q[u].empty()){ if(net[q[u].top().pos]) q[u].pop(); else{ int tp=q[u].top().pos; int chs=0,bts=4401; for(int i=1;i<=k[tp];++i){ if(!used[c[tp][i]]&&c[tp][i]!=u){ if(vis[c[tp][i]]<bts){ bts=vis[c[tp][i]]; chs=i; } } } if(chs){ used[c[tp][chs]]=1; used[u]=1; ans++; net[tp]=1; for(int j=1;j<=k[tp];++j){ if(!used[c[tp][j]]){ vis[c[tp][j]]--; g.push(node{vis[c[tp][j]],c[tp][j]}); } } break; } q[u].pop(); } } } printf("%d\n",ans); return 0; }


测评信息: