栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 2682 People like People

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 2682 People like People

#include <iostream>#include <stdio.h>#include <string.h>using namespace std;#define N 20000struct note{ int v,next;}edge[N*4];int head[N],kk;int num[N],num2[N];bool has[N];void init(){ kk = 1; memset(num,0,sizeof(num)); memset(num2,0,sizeof(num2)); memset(head,-1,sizeof(head)); memset(has,0,sizeof(has));}void add(int fa,int son){ edge[kk].v = son; edge[kk].next = head[fa]; head[fa] = kk++;}int main(){ int t; cin >> t; while(t--) { int n,m; cin >> n >> m; init(); for(int i = 1;i <= n;i++ )has[i] = 1; for(int i = 0;i < m;i++) { int tt; cin >> tt; has[tt] = 0; int cc; cin >> cc; int ttt; while(cc--) { cin >> ttt; add(tt,ttt); } } while(true) { bool b = 0; memset(num,0,sizeof(num)); for(int i = 1;i <= n;i++) { if(has[i] == 1) continue; else for(int j = head[i];j != -1;j = edge[j].next) { num[edge[j].v]++; if(has[edge[j].v] == 1) { has[i] = 1; b = 1; } } } for(int i = 1;i <= n;i++) { if(has[i] != 1 && num[i] == 0) { has[i] = 1; b = 1; } } if(!b) break; } int ans = n; for(int i = 1;i <= n;i++) ans -= has[i]; cout << ans << "n"; } return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号