HDU4324 - Triangle LOVE 拓补排序
生活随笔
收集整理的這篇文章主要介紹了
HDU4324 - Triangle LOVE 拓补排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
HDU4324 - Triangle LOVE :?http://acm.showproblemhdu.edu.cn/.php?pid=4324
標準的拓補排序,上代碼 :
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int MAXN = 2010; int In[MAXN]; char Map[MAXN][MAXN]; int T,N; int x,y; int flag,Case = 0; void Initial() {flag = 0;memset(In,0,sizeof(In)); } void TopoSort() {int i,j,k;for(i = 0;i < N;i++){/* //這樣寫也可以過,但是時間會多一點點 for(j = 0;j < N;j++) {if(!In[j]){In[j]--,flag++;for(k = 0;k < N;k++){if(Map[j][k])Map[j][k] = 0,In[k]--;}}}*/for(j = 0;j < N;j++)if(!In[j])//找出第一個入度為0的節點 break; if(j == N)//若沒有入度為零的節點,則必成環 {flag = 1;break;}else{In[j]--;//,,, ,,,for(k = 0;k < N;k++)if(Map[j][k] == '1')In[k]--;}} if(flag)printf("Case #%d: Yes\n",++Case);else printf("Case #%d: No\n",++Case); } int main() {int i,j;scanf("%d",&T);while(T--){Initial();scanf("%d",&N);for(i = 0;i < N;i++){scanf("%s",Map[i]);for(j = 0;j < N;j++)if(Map[i][j] == '1')//若有字符'1',則代表當前人 i 喜歡'1'字符所代表的人 jIn[j]++;//入度加一 }TopoSort();}return 0; }總結
以上是生活随笔為你收集整理的HDU4324 - Triangle LOVE 拓补排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笑话5
- 下一篇: 卐 4-3D图形的数学