强连通分量
infinity°º
stay hungry stay foolish
展开
-
2 sat hdu1824异或关系还要反向建边
这些数组的范围 maxn注意下看看是乘几 //3n(人数)*2(去or不去) 每人两种情况共6n!!! //上一题夫妻2n个人,夫妻本来就是相反的关系。这题里队长和两队员是相反关系但两队员编号也不同也没法捆绑啥的 。。 #include<bits/stdc++.h> using namespace std; const int maxn=6005;//1-3n是3n个人去。3n-6n是这些人不去 int a,b,n,m,num,head[2][maxn],s[maxn]; int ...原创 2021-08-15 20:16:01 · 87 阅读 · 0 评论 -
2 sat hdu3602
#include<bits/stdc++.h> using namespace std; const int maxn=2005; int a,b,c,d,n,m,num,head[2][maxn]; int q[maxn],vis[maxn],f[maxn],cnt[2]; struct ss{ int v,nex; }g[2][maxn*maxn]; //+n表示丈夫 //关于建边:表示u,v同时存在 void creat(int u,int v){ g[0][++cnt[0]]=.原创 2021-08-15 20:06:13 · 80 阅读 · 0 评论 -
缩点成dag图
https://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1011&cid=963 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e5+5; int T,n,m,cnt[3],t,head[3][maxn],vis[maxn],p[maxn],f[maxn]; int from[maxn<<.原创 2021-08-15 19:18:54 · 114 阅读 · 0 评论 -
求点对数
Problem Description 给定一个有向图,统计有多少点对u,v(1≤u<v≤n) 满足u 可以到达v ,且v 可以到达u 。 Input 第一行包含一个正整数T(1≤T≤10) ,表示测试数据的组数。 每组数据第一行包含两个正整数n,m(1≤n≤100000,1≤m≤200000) ,表示点数和边数。 接下来m 行,每行包含两个正整数ui,vi(1≤ui,vi≤n,ui≠vi) ,表示一条ui→vi 的单向边。 Output 对于每组数据输出一行一个整数,即满足条件的点对数。原创 2021-08-15 18:54:33 · 279 阅读 · 0 评论 -
hdu1269强连通分量(有向图)模板题
有向图,经过dfs1后可当 无向图操作 //强连通分量:任意两点之间互相连通 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e4+5; int T,n,m,cnt[2],t,head[2][maxn],vis[maxn],p[maxn],f[maxn]; ll res[maxn]; struct E{ int to,nex; }e[2][10*maxn]; int add原创 2021-08-15 18:05:14 · 124 阅读 · 0 评论 -
hdu 1872稳定排序
//stable_sort() 是稳定的 快排 //得用c1 c2累加,不能判断完不稳定就break。可能这个不稳定,但下一个成绩都不对,所以最终应为ERROR #include<bits/stdc++.h> using namespace std; struct tt{ char name[53]; int sum; }a[302],b[302]; bool cmp(tt x,tt y){ return x.sum>y.sum; } int main(){.原创 2021-08-15 15:28:38 · 78 阅读 · 0 评论