码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 4324

时间:2016-08-20 17:39:52      阅读:116      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!