亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usaco_5_3_3_schlnet-強連通分量.cpp

?? usaco自己做的1到5章的代碼
?? CPP
字號:
/*
 ID: wangyuc2
PROG: schlnet
LANG: C++
*/
/*
這是一道收縮強連通分量的題。 

該題描述的是一個有向圖。我們都知道,在一個有向圖強連通分量中從任意一個頂點開始,可以到達強連通分量的每個頂點。由此可以把該題中所有強連通分量收縮成分別一個頂點,則入度為0的頂點就是最少要接受新軟件副本的學校。 

第二問就是,問至少添加多少條邊,才能使原圖強連通。也就問在收縮后的圖至少添加多少條邊,才能使之強連通。 

可以知道,當存在一個頂點入度為0或者出度為0的時候,該圖一定不是強連通的。為了使添加的邊最少,則應該把入度為0頂點和出度為0的頂點每個頂點添加1條邊,使圖中不存在入度為0頂點和出度為0的頂點。 

當入度為0的頂點多于出度為0的頂點,則應添加的邊數應為入度為0的頂點的個數。當出度為0的頂點多于出入度為0的頂點,則應添加的邊數應為出度為0的頂點的個數。 

這樣就可以解決問題了。但是不要忘了還有特殊的情況,當原圖本身就是強連通分量時,收縮成一個頂點,該頂點入度和出度都為0,但第一問應為1,第二問應為0。 

求強連通分量,我用的兩遍深搜的Kosaraju算法,時間復雜度為O(n)。把找到的每個強連通分量收縮為一的頂點,組成新圖。設r(x)為x所在的強連同分量的代表節點,如果原圖中存在邊e(x,y),那么新圖中有邊e(r(x),r(y)) 。然后根據點的鄰接關系統計出度和入度即可。 




[編輯] 求強連通分量的另一種方法 
Sinya覺得寫深搜求太麻煩了,所以Sinya就用了另一種求強連通分量的方法。 

用froyed算出兩點間是否可以互相到達。然后枚舉任意兩個頂點Vi還有Vj,如果兩個點互相可以到達,那么他們就是屬于同一個強連通分量了。 

雖然是O(n^3)的算法??墒沁@道題能過。可以大幅降低編程復雜度。 

但是Sinya又覺得我們要精益求精,所以大家也要掌握深搜法哦 




[編輯] 旁門左道 
本題我用的是一種非標準算法。不知道為什么對,但是過了。 

第一問是求最小點基。這個我是分步驟計算的: 

首先,所有入度為0的點肯定要得到軟件,因為如果得不到,那么沒有別的點來通過網絡傳輸給它。找出所有入度為0的點,把這些點以及他所能到達的點全都作上標記。 

對于剩下的點,找出塊的個數,這里定義兩個點連通當且僅當兩個點之間存在路徑,不考慮方向。原因很簡單,兩個點之間只要其中一個能到達另一個即可,這樣的塊中必然有一個點可以作為起點,而由于前一步已經把入度為0的點去掉了,所以這樣的塊一定從起點可以到達所有點。 

第一問的答案就是上述兩者個數之和。 

第二問首先統計整個圖的入度為0和出度為0的點的個數,前者再加上上一步求出來的塊的個數(當整個圖就是一個塊的時候不用加),答案就是兩者中的較大者。 

*/
/*
Kosaraju算法
來自"NOCOW"
跳轉到: 導航, 搜索
/*這是一個求圖的強連通分量的算法。*/ 
#include <cstdio>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
#define NMAX 11000 
 
vector< vector< int > > path;
vector< vector< int > > npath;
int n,m, scc;
int order[NMAX], order_pos, id[NMAX], id_total[NMAX];
bool vis[NMAX];
int out_degre[NMAX];
 
void dfs(int pos)
{
	int i,j,l;
	vis[pos] = true;
	l = path[pos].size();
	for (i=0;i<l;i++) {
		j = path[pos][i];
		if (!vis[j]) {
			dfs(j);
		}
	}
	order[ order_pos ++ ] = pos;//make order
}
 
void ndfs(int pos)
{
	int i,j,l;
	vis[pos] = true;
	id[pos] = scc;
	l = npath[pos].size();
	for (i=0;i<l;i++) {
		j = npath[pos][i];
		if (!vis[j]) {
			ndfs(j);
		}
	}
}
 
void Kosaraju()
{
	int i,j,l;
	//dfs in original graph
	memset(vis, 0, sizeof(vis));
	for (i=1; i<=n ;i++) {
		if (!vis[i]) {
			dfs(i);
		}
	}
	//dfs in inverse graph
	memset(vis, 0, sizeof(vis));
	memset(id, 0, sizeof(id));
	scc = 1;
	for (i=order_pos-1; i>=0 ;i--) {
		if (!vis[ order[i] ]) {
			ndfs(order[i]);
			scc ++;
		}
	}
	//statist
	scc --;
	memset(id_total, 0, sizeof(id_total));
	for (i=1;i<=n;i++) {
		id_total[ id[i] ] ++;
	}
 
	memset(out_degre, 0, sizeof(out_degre));
	for (i=1;i<=n;i++) {
		l = path[i].size();
		int id1 = id[i];
		for (j=0;j<l;j++) {
			int id2 = id[ path[i][j] ];
			if (id1 != id2) {//id1 -> id2
				out_degre[id1] ++;
			}
		}
	}
	int ans_id,zero_degre = 0;
	for (i=1;i<=scc;i++) {
		if (out_degre[i] == 0) {
			zero_degre ++;
			ans_id = i;
		}
	}
 
	if (zero_degre > 1) {
		printf("0\n");
	}
	else {
		printf("%d\n",id_total[ ans_id ]);
	}
}
 
int main()
{
	int i,j;
	while (scanf("%d %d",&n,&m)==2) {
		path.resize(n+10);
		npath.resize(n+10);
		for (i=0;i<=n;i++) {
			path[i].clear();
			npath[i].clear();
		}
		order_pos = 0;
		//set graph
		for (i=0;i<m;i++) {
			int x,y;
			scanf("%d %d",&x,&y);
			path[x].push_back(y);
			npath[y].push_back(x);
		}
		Kosaraju();
	}
}
*/
//written by CmYkRgB123
#include <iostream>
#include <fstream>
#define MAXN 101
#define max(x,y) ((x)>(y)?x:y)

using namespace std;

ifstream fi("schlnet.in");
ofstream fo("schlnet.out");

int N,M;
int adjl[MAXN][MAXN],fdjl[MAXN][MAXN];
bool vis[MAXN],dis[MAXN][MAXN];
int belong[MAXN],ind[MAXN],oud[MAXN],i0,o0;


void init()
{
	int t,i;
	fi >> N;
	for (i=1;i<=N;i++)
	{
		fi >> t;
		while (t)
		{
			adjl[i][ ++adjl[i][0] ]=t;
			fdjl[t][ ++fdjl[t][0] ]=i;
			fi >> t;
		}
	}
}

void dfs(int i)
{
	int j,k;
	vis[i]=true;
	for (k=1;k<=adjl[i][0];k++)
	{
		j=adjl[i][k];
		if (!vis[j])
			dfs(j);
	}
}

void fdfs(int i)
{
	int j,k;
	belong[i]=M;
	for (k=1;k<=fdjl[i][0];k++)
	{
		j=fdjl[i][k];
		if (vis[j] && !belong[j])
			fdfs(j);
	}
}

void solve()
{
	int i,j,k;
	for (i=1;i<=N;i++)
	{
		if (!belong[i])
		{
			dfs(i);
			M++;
			fdfs(i);
			memset(vis,0,sizeof(vis));
		}
	}
	for (i=1;i<=N;i++)
	{
		for (k=1;k<=adjl[i][0];k++)
		{
			j=adjl[i][k];
			dis[belong[i]][belong[j]]=true;
		}
	}
	for (i=1;i<=M;i++)
	{
		for (j=1;j<=M;j++)
		{
			if (i!=j && dis[i][j])
			{
				oud[i]++;
				ind[j]++;
			}
		}
	}
	for (i=1;i<=M;i++)
	{
		if (ind[i]==0)
			i0++;
		if (oud[i]==0)
			o0++;
	}
}

void print()
{
	if (M==1)
		fo << 1 << endl << 0 << endl;
	else
	{
		fo << i0 << endl;
		fo << max(i0,o0) << endl;
	}
	fi.close();
	fo.close();
}

int main()
{
	init();
	solve();
	print();
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆国产精品官网| 国产精品乱子久久久久| 制服丝袜亚洲精品中文字幕| 欧美日韩综合一区| 欧美一区二区黄| 精品国产在天天线2019| 国产区在线观看成人精品| 中文字幕第一区二区| 中文字幕在线一区二区三区| 亚洲一区二区三区视频在线播放 | 午夜视频在线观看一区| 日本不卡一区二区| 高清不卡一区二区| 欧美亚洲动漫另类| 久久精品一区二区| 亚洲一区二区av电影| 国产一区二区三区av电影 | 视频一区二区国产| 国产成人精品在线看| 色爱区综合激月婷婷| 精品电影一区二区| 婷婷开心久久网| 91色九色蝌蚪| 26uuu亚洲综合色| 日本人妖一区二区| 一本高清dvd不卡在线观看| 国产日韩欧美在线一区| 青青草91视频| 在线播放中文字幕一区| 国产69精品久久777的优势| 欧美自拍偷拍一区| www.成人在线| 欧美三电影在线| 国产精品福利一区二区三区| 另类欧美日韩国产在线| www精品美女久久久tv| 亚洲精品一二三区| 国产精品69毛片高清亚洲| 日韩欧美国产精品一区| 天天综合天天做天天综合| 欧美性猛片xxxx免费看久爱 | 中文在线免费一区三区高中清不卡| 亚洲一区二区在线免费看| 国产制服丝袜一区| 日韩精品一区二区三区蜜臀 | 欧美理论电影在线| 亚洲国产日韩在线一区模特| 在线一区二区三区四区| 亚洲国产精品欧美一二99| 欧美高清dvd| 国产一区二区三区在线看麻豆| 日韩一区二区三区电影在线观看 | 国产精品妹子av| 欧美午夜理伦三级在线观看| 视频在线在亚洲| 久久伊人蜜桃av一区二区| 91视视频在线观看入口直接观看www| **欧美大码日韩| 欧美电影免费提供在线观看| 成人国产在线观看| 日本午夜精品视频在线观看 | 国产98色在线|日韩| 亚洲综合色在线| 欧美激情综合在线| 欧美精品免费视频| 91丝袜美腿高跟国产极品老师 | 精品国产乱码久久久久久久久 | 婷婷六月综合网| 亚洲私人影院在线观看| 久久综合狠狠综合| 欧美一级爆毛片| 欧美日韩情趣电影| 色先锋资源久久综合| 风流少妇一区二区| 久久精品免费观看| 美女爽到高潮91| 麻豆91在线看| 久久精品国产在热久久| 日韩主播视频在线| 亚洲成人免费在线| 亚洲成人你懂的| 奇米精品一区二区三区在线观看| 亚洲高清视频在线| 蜜芽一区二区三区| 免费在线观看成人| 国产精品影视天天线| 在线免费精品视频| 色av成人天堂桃色av| 日一区二区三区| 精品国产一区二区三区忘忧草| 国产精品一区在线| 日产国产欧美视频一区精品| 欧美系列亚洲系列| 91国内精品野花午夜精品| 91视频在线观看| 91国产福利在线| 91精品欧美久久久久久动漫| 欧美精品1区2区3区| 日韩一区二区在线观看视频| 精品国产一区二区三区久久影院 | 欧美亚日韩国产aⅴ精品中极品| 91视频91自| 在线不卡欧美精品一区二区三区| 欧美另类高清zo欧美| 久久久蜜桃精品| 亚洲一区二区免费视频| 国产一区在线视频| 97精品国产97久久久久久久久久久久| www.性欧美| 亚洲精品一区二区三区影院| 国产精品久久久久9999吃药| 石原莉奈在线亚洲二区| 粉嫩av亚洲一区二区图片| 欧美剧在线免费观看网站| 国产丝袜美腿一区二区三区| 亚洲1区2区3区视频| 国产成人av一区二区| 日韩一区二区电影| 亚洲精选在线视频| 成人中文字幕合集| 久久亚洲精精品中文字幕早川悠里 | 精品剧情在线观看| 亚洲黄色免费网站| 国产一区二区主播在线| 精品视频一区二区三区免费| 亚洲免费av高清| 成人三级伦理片| 国产精品国产a| 一本一本大道香蕉久在线精品| 国产欧美一区二区三区在线看蜜臀 | 蜜桃久久久久久| 色一情一乱一乱一91av| 国产精品女同一区二区三区| 粉嫩嫩av羞羞动漫久久久| 久久青草欧美一区二区三区| 国内精品自线一区二区三区视频| 日韩欧美在线影院| 国产精品99久久久久久似苏梦涵| 精品福利一区二区三区| 成人做爰69片免费看网站| 国产精品久久久久四虎| 在线观看视频欧美| 久久爱www久久做| 国产精品久久久久影视| 欧美无乱码久久久免费午夜一区| 日韩中文字幕不卡| 亚洲国产高清aⅴ视频| 欧美性生活大片视频| 国产成人精品影视| 国产曰批免费观看久久久| 国产精品成人网| 成人国产精品免费网站| 中文字幕在线观看不卡| 成人性视频网站| 亚洲国产高清aⅴ视频| 美洲天堂一区二卡三卡四卡视频| 91精品国产丝袜白色高跟鞋| 国产欧美日韩三级| www.日韩av| 日本美女视频一区二区| 国产亚洲美州欧州综合国| 欧美视频一区二区三区在线观看| 日韩av电影免费观看高清完整版在线观看 | 国产精品不卡在线| 777色狠狠一区二区三区| aa级大片欧美| 国产黑丝在线一区二区三区| 亚洲成a人片综合在线| 国产精品国产三级国产| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产欧美一区二区三区在线老狼 | 日本一区二区三区视频视频| 欧美精品久久99久久在免费线 | 日韩欧美的一区| 欧美日韩国产欧美日美国产精品| a级高清视频欧美日韩| 国产精品一级在线| 久久99精品久久久久久动态图| 亚洲一区精品在线| 日韩一区欧美二区| 偷拍一区二区三区四区| 婷婷综合久久一区二区三区| 日韩成人精品在线观看| 日韩中文欧美在线| 七七婷婷婷婷精品国产| 另类综合日韩欧美亚洲| 免费的成人av| 韩国av一区二区| 成人性生交大合| 欧美在线免费视屏| 日韩美女一区二区三区四区| 91麻豆精品国产综合久久久久久| 精品日韩一区二区三区免费视频| 久久久久国产一区二区三区四区| 欧美本精品男人aⅴ天堂| 26uuu精品一区二区三区四区在线| 国产精品久久久久久久蜜臀| 五月婷婷另类国产| 高清国产午夜精品久久久久久| 国产精品888|