hdu 4635 Strongly connected
来源:互联网 发布:优米网倒闭知乎 编辑:程序博客网 时间:2024/06/05 02:18
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <stack>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>//#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=100000+5;struct Edge{ int s,t;};vector<Edge>edge;vector<int>g[N],gt[N];int n,m,vis[N],in[N],out[N],ord[N],id[N],cnt,sum[N];void Addedge(int s,int t){ Edge tp; tp.s=s;tp.t=t; edge.push_back(tp); g[s].push_back(edge.size()-1); gt[t].push_back(edge.size()-1);}void dfsa(int u){ int i,v; vis[u]=1; for(i=0;i<g[u].size();i++) { v=edge[g[u][i]].t; if(!vis[v]) dfsa(v); } ord[cnt++]=u;}void dfst(int u){ int i,v; vis[u]=1; id[u]=cnt; sum[cnt]++; for(i=0;i<gt[u].size();i++) { v=edge[gt[u][i]].s; if(!vis[v]) dfst(v); }}int main(){ int O_O,i,u,v; scanf("%d",&O_O); for(int _=1; _<=O_O; _++) { scanf("%d%d",&n,&m); edge.clear(); for(i=0;i<n;i++) { g[i].clear(); gt[i].clear(); id[i]=i; } for(i=0;i<m;i++) { scanf("%d%d",&u,&v); Addedge(u-1,v-1); } cnt=0; memset(sum,0,sizeof(sum)); memset(vis,0,sizeof(vis)); for(i=0;i<n;i++) { if(!vis[i]) dfsa(i); } cnt=0; memset(vis,0,sizeof(vis)); for(i=n-1;i>=0;i--) { if(!vis[ord[i]]) { cnt++; dfst(ord[i]); } } printf("Case %d: ",_); if(cnt==1) {printf("-1\n");continue;} memset(in,0,sizeof(in)); memset(out,0,sizeof(out)); for(i=0;i<edge.size();i++) { u=id[edge[i].s]; v=id[edge[i].t]; if(u!=v) in[v]++,out[u]++; } ll ans=0; int t=n*n-m-n; for(i=1; i<=cnt; i++) { //printf("%d\n",sum[i]); if(in[i]==0||out[i]==0) ans=max(ans,(ll)t-sum[i]*(n-sum[i])); } printf("%lld\n",ans); } return 0;}
0 0
- hdu 4635Strongly connected
- HDU 4635 Strongly connected
- HDU 4635 Strongly connected
- hdu 4635 Strongly connected
- hdu 4635 Strongly connected(Tarjan)
- hdu 4635 Strongly connected (tarjan)
- [tarjan] hdu 4635 Strongly connected
- hdu acm 4635 Strongly connected
- hdu 4635——Strongly connected
- HDU 4635 Strongly connected 解题报告
- HDU 4635 Strongly connected(图论)
- hdu 4635 Strongly connected 强连通
- hdu 4635 Strongly connected (强连通分量)
- hdu-4635-Strongly connected-强连通分量
- HDU 4635 Strongly connected 强连通
- hdu 4635 Strongly connected(连通分量)
- HDU 4635 Strongly connected(强连通分量)
- 【强连通】 HDU 4635 Strongly connected
- 数据库索引与多表联查
- 【Android学习笔记】Android中的进程和线程
- Android 读取SD卡中的text文件内容
- 日历控件合集
- Vue.js使用props传递数据驼峰式与短横线隔
- hdu 4635 Strongly connected
- 如何在继承于UITableViewCell的类中获取这个cell得主视图控制器
- Hibernate学习(1)
- 问题1:解决直接输出类的内容无法显示中文的问题
- 条件编译(程序调试)的三种形式
- codeforces 389A Fox and Number Game
- Android实现本地上传图片并设置为圆形头像
- Diving into OpenStack Network Architecture - Part 3 - Routing
- 【分享】兼容各种Linux平台的关闭所有指定名字的进程的命令