CCF 201709-4 通信网络 满分 精简

题目描述:

在这里插入图片描述

问题思路:

点数量不多,直接暴力DFS盘他。

AC代码:

在这里插入图片描述

#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
int n,xn,m,ans;
vector<int>vroot[1001];
char flag[1001],map[1001][1001],VISIT=char(1);
void DFS(const int&u,const int&v){//起点是u,可以到达的点v
	if(flag[v]==VISIT)return;
	map[u][v]=map[v][u]=flag[v]=VISIT;
	for(int i=0,ni=vroot[v].size();i<ni;++i) DFS(u,vroot[v][i]);
}
int main()
{
	cin>>n>>m,ans=0,xn=n+1,memset(map,0,sizeof(map));
	for(int i=0,a,b;i<m;++i)cin>>a>>b,vroot[a].push_back(b);
	for(int i=n;i>0;--i) map[i][0]=VISIT,memset(flag,0,sizeof(char)*xn),DFS(i,i);
	string sflag=string(xn,VISIT);
	for(int i=n;i>0;--i)if(sflag==string(map[i],xn))++ans;
	cout<<ans<<endl;
	return 0;
}
发布了107 篇原创文章 · 获赞 21 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/best335/article/details/88624961