首页 > 代码库 > topcoder srm 682 div1 -3
topcoder srm 682 div1 -3
1、给定一个$n$个节点的无向图。找到一个长度为4的链。$5\leq n \leq 2000$
思路:枚举链的起点,暴力搜索即可。因为假设图中最长链的长度是3,那么搜索的最大复杂度是$O(n^{2})$。
#include <stdio.h>#include <string.h>#include <string>#include <iostream>#include <vector>#include <set>#include <map>#include <queue>#include <algorithm>#include <stack>#include <assert.h>using namespace std;const int N=2005;vector<int > g[N];int h[N];int dfs(int u,int pre,int cnt){ if(cnt==5) return 1; h[u]=1; for(int i=0;i<(int)g[u].size();++i) { int v=g[u][i]; if(v!=pre&&!h[v]&&dfs(v,u,cnt+1)) return 1; } h[u]=0; return 0;}class SmilesTheFriendshipUnicorn{public: string hasFriendshipChain(int n,vector<int> A,vector<int> B) { const int m=(int)A.size(); for(int i=0;i<m;++i) { int u=A[i]; int v=B[i]; g[u].push_back(v); g[v].push_back(u); } for(int i=0;i<n;++i) { memset(h,0,sizeof(h)); if(dfs(i,-1,1)) return "Yay!"; } return ":("; }};
topcoder srm 682 div1 -3
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。