參考html
http://www.javashuo.com/article/p-yrudxsyl-dd.htmlc++
思路安全
dfs尋找與某點相連的全部點+vector容器提升效率ide
(不使用vector時只有60分,運行超時)spa
實現code
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 #define MAXN 1005 6 7 vector<int> path[MAXN]; 8 int vist[MAXN]; 9 int ans[MAXN][MAXN]; 10 11 int dfs(int a,int b){//從b開始深搜尋找與a相通的點 12 ans[a][b]=1; 13 ans[b][a]=1; 14 vist[b]=1; 15 for(int j=0;j<path[b].size();j++){ 16 if(vist[path[b][j]]==0){ 17 dfs(a,path[b][j]); 18 } 19 } 20 } 21 22 int main() 23 { 24 memset(ans,0,sizeof(ans)); 25 memset(vist,0,sizeof(vist)); 26 27 int n,m,num=0; 28 cin>>n>>m; 29 int a,b; 30 for(int i=0;i<m;i++){ 31 cin>>a>>b; 32 path[a].push_back(b); 33 } 34 35 for(int i=1;i<=n;i++){ 36 memset(vist,0,sizeof(vist)); 37 dfs(i,i); 38 } 39 for(int i=1;i<=n;i++){ 40 int j=1; 41 for(;j<=n;j++){ 42 if(ans[i][j]==0){ 43 break; 44 } 45 } 46 if(j==n+1){ 47 num++; 48 } 49 } 50 cout<<num; 51 52 return 0; 53 }
題目htm
問題描述blog