程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDOj 2094 產生冠軍(拓撲排序)

HDOj 2094 產生冠軍(拓撲排序)

編輯:C++入門知識

只需統計無沒有前驅結點的結點個數即可,如果是環,是0個,如果有不確定的,那麼肯定>1

利用STL裡的map,string,set容器可以簡潔地實現


代碼如下:

 \

 

[cpp]
#include<iostream>  
#include<map>  
#include<set>  
#include<string>  
using namespace std; 
 
map<string,string>G; 
set<string>Set; 
set<string>::iterator p; 
 
int main(){ 
    int n,i; 
    string a; 
    string b; 
    //freopen("1.txt","r",stdin);  
    while(cin>>n,n){ 
        G.clear(); 
        Set.clear(); 
        for(i=1;i<=n;i++){ 
            cin>>a>>b; 
            Set.insert(a); 
            Set.insert(b); 
            G[b]=a; 
        } 
        i=0; 
        for(p=Set.begin();p!=Set.end();p++){ 
            if(G[*p].length()==0) 
                i++; 
        } 
        if(i==1) 
            cout<<"Yes"<<endl; 
        else 
            cout<<"No"<<endl; 
    } 
    return 0; 

#include<iostream>
#include<map>
#include<set>
#include<string>
using namespace std;

map<string,string>G;
set<string>Set;
set<string>::iterator p;

int main(){
 int n,i;
 string a;
 string b;
 //freopen("1.txt","r",stdin);
 while(cin>>n,n){
  G.clear();
  Set.clear();
  for(i=1;i<=n;i++){
   cin>>a>>b;
   Set.insert(a);
   Set.insert(b);
   G[b]=a;
  }
  i=0;
  for(p=Set.begin();p!=Set.end();p++){
   if(G[*p].length()==0)
    i++;
  }
  if(i==1)
   cout<<"Yes"<<endl;
  else
   cout<<"No"<<endl;
 }
 return 0;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved