首页 > 其他 > 详细

hdu 4324

时间:2016-08-20 17:39:42      阅读:180      评论:0      收藏:0      [点我收藏+]
思路待整理

#include<cstdio> #include<iostream> #include<vector> #include<queue> #define maxn 2005 using namespace std; string mapp[maxn]; int n,du[maxn]; vector<int> fuck[maxn]; void init() { for(int i=0;i<maxn;i++) fuck[i].clear(),du[i]=0; } void in() { cin>>n; for(int i=1;i<=n;i++) cin>>mapp[i]; for(int i=1;i<=n;i++) { for(int j=0;j<mapp[i].size();j++) { if(mapp[i][j]==‘1‘) { fuck[i].push_back(j+1);// 对应位置搞清楚 du[j+1]++; } } } } void solve() { queue<int> q; for(int i=1;i<=n;i++) if(du[i]==0) q.push(i),du[i]=-1; int num=0; while(q.size())//思想是每次取出一个入度为零的点 然后将其指向的点的入度减一 { // cout<<".."<<endl; int temp=q.front(); q.pop(); num++; for(int j=0;j<fuck[temp].size();j++) du[fuck[temp][j]]--; for(int i=1;i<=n;i++) if(du[i]==0) q.push(i),du[i]=-1;//不断的有新的点需要加入 } if(num==n) cout<<"No"<<endl; else cout<<"Yes"<<endl; } int main() { cin.sync_with_stdio(false); int t,Case=0; cin>>t; while(t--) { init();//初始化 in();//输入 cout<<"Case #"<<++Case<<": "; solve(); } return 0; }

hdu 4324

原文:http://www.cnblogs.com/z1141000271/p/5790706.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!