Uva-11324-The Largest Clique
来源:互联网 发布:wifi网络性能测试仪器 编辑:程序博客网 时间:2024/04/29 10:10
求双联通分量后简单DP下就行了,白书上的一个题。唉,在dfs_clock应该先++,这里卡死了
代码:
#include<cstdio>#include<iostream>#include<cstring>#include<stack>using namespace std;const int maxn=1500;const int maxm=1e5+100;int e,n,m,head[maxn],nxt[maxm],pnt[maxm];int dfs_clock,scc_cnt,sccno[maxn],dfn[maxn],lowlink[maxn];int u[maxm],v[maxm],cnt[maxn],dp[maxn];bool is[1001][1001];stack<int> s;void AddEdge(int u,int v){ pnt[e]=v;nxt[e]=head[u];head[u]=e++;}void dfs(int u){ dfn[u]=lowlink[u]=++dfs_clock; s.push(u); for(int i=head[u];i!=-1;i=nxt[i]) { if(!dfn[pnt[i]]) { dfs(pnt[i]); lowlink[u]=min(lowlink[u],lowlink[pnt[i]]); } else if(!sccno[pnt[i]]) { lowlink[u]=min(lowlink[u],dfn[pnt[i]]); } } if(lowlink[u]==dfn[u]) { scc_cnt++; for(;;) { int x=s.top(); s.pop(); sccno[x]=scc_cnt; cnt[scc_cnt]++; if(x==u) break; } }}void find_scc(int n){ dfs_clock=scc_cnt=0; memset(sccno,0,sizeof(sccno)); memset(dfn,0,sizeof(dfn)); memset(cnt,0,sizeof(cnt)); for(int i=1;i<=n;i++) if(!dfn[i]) dfs(i);}int DP(int u){ if(dp[u]) return dp[u]; dp[u]=cnt[u]; for(int i=head[u];i!=-1;i=nxt[i]) dp[u]=max(dp[u],DP(pnt[i])+cnt[u]); return dp[u];}void rebuild(){ e=0; memset(is,0,sizeof(is)); memset(head,-1,sizeof(head)); memset(dp,0,sizeof(dp)); for(int i=0;i<m;i++) if(sccno[u[i]]!=sccno[v[i]]&&!is[sccno[u[i]]][sccno[v[i]]]) { is[sccno[u[i]]][sccno[v[i]]]=1; AddEdge(sccno[u[i]],sccno[v[i]]); } int ans=0; for(int i=1;i<=scc_cnt;i++) { ans=max(ans,DP(i)); // printf("SSSS %d %d\n",i,cnt[i]); } printf("%d\n",ans);}int main(){ int T; scanf("%d",&T); while(T--) { e=0; scanf("%d%d",&n,&m); memset(head,-1,sizeof(head)); for(int i=0;i<m;i++) { scanf("%d%d",&u[i],&v[i]); AddEdge(u[i],v[i]); } find_scc(n); rebuild(); } return 0;}
0 0
- UVA 11324 The Largest Clique
- UVA 11324 The Largest Clique
- Uva-11324-The Largest Clique
- UVA - 11324 The Largest Clique
- UVA 11324 The Largest Clique
- Uva 11324 The Largest Clique
- UVA-The Largest Clique 11324
- uva 11324 The Largest Clique
- LRJ白书图论 11324 - The Largest Clique uva
- uva 11324 - The Largest Clique(缩点 + dp)
- Uva 11324 - The Largest Clique 缩点 求最大团
- UVa 11324 The Largest Clique / 强连通分量
- UVA 11324 The Largest Clique(SCC+DP)
- 【UVa】11324 The Largest Clique 强连通缩点+DP
- uva 11324 The Largest Clique (强连通分量+dp)
- uva 11324 The Largest Clique(图论-tarjan,动态规划)
- UVA 11324 - The Largest Clique(强连通分量+缩点)
- UVA 11324 The Largest Clique 强连通缩点+DP
- 利用DHT网络原理制作bt采集蜘蛛,开源版
- U-boot的环境变量: bootcmd 和bootargs。
- 字节输入流和字符输入流
- wpf 提示未将对象引用设置到对象的实例
- 给Android应用开发者的十个建议
- Uva-11324-The Largest Clique
- spring框架搭建笔记
- drupal页面加载的流程----跟着函数追本溯源
- 常见adb指令
- 在MFC中创建模态对话框
- C/C++“大数相加算法”
- 20140624-STM8L101F3P6查询发送中断接收
- Android应用开发提高系列——Android动态加载(下)——加载已安装APK中的类和资源
- 找了台服务器将磁力链接爬虫架设起来http://www.51bt.cc(51搜索)大家可以看下。