(ccf)201709-4 通訊網絡

#include<iostream>  
#include<memory.h>
#include<stack>
#include<string>
#include<cmath>
#include<map>
#include<algorithm> 
#include<sstream>
#include<set>
#include<queue>

using namespace std;
int N,M;
vector<int>v[1001];//用來存鄰接關係 
int con[1024][1024];//兩個點之間是否能夠傳達消息 
int visited[1001];//是否已經訪問 
int src;//出發點 
void dfs(int vec)
{
    if(visited[vec]==1)
        return;
    visited[vec]=1;
    con[src][vec]=1;
    con[vec][src]=1;
    for(vector<int>::iterator it=v[vec].begin();it!=v[vec].end();++it)
    {
        dfs(*it);
    }   
}

int main()
{
    
    cin>>N>>M;
    for(int i=1;i<=M;i++)
    {
        int src,tar;
        cin>>src>>tar;
        v[src].push_back(tar);
    }
    for(int i=1;i<=N;i++)
    {
            memset(visited,0,sizeof(visited));
            src=i;
            dfs(i);
    }
    int ans=0;
    for(int i=1;i<=N;i++)
    {
        for(int j=1;j<=N;j++)
        {
            if(con[i][j]!=1)
                break;
            if(j==N)
                ans++;
        }
    }
    cout<<ans;
    return 0;
}
相關文章
相關標籤/搜索