cf1000E

Posted 033000-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cf1000E相关的知识,希望对你有一定的参考价值。

技术图片

 

 先缩点构造出一颗树,然后求树的直径就好

const int maxn=3e5+5;
const int maxm=6e5+5;
const int inf=1e9;

int head[maxn],ver[maxm],nex[maxm],tot;

void inline AddEdge(int x,int y){
	ver[++tot]=y,nex[tot]=head[x],head[x]=tot;
}

int n,m;

bool bridge[maxm];

int dfn[maxn],low[maxn];

int num;

void Tarjan(int x,int edge){
	//cout<<x<<endl;
	dfn[x]=low[x]=++num;
	for(int i=head[x];i;i=nex[i]){
		int y=ver[i];
		if(!dfn[y]){
			Tarjan(y,i);
			low[x]=min(low[x],low[y]);
			if(low[y]>dfn[x])
				bridge[i]=bridge[i^1]=1;
		}
		else if(i!=(edge^1)) 
			low[x]=min(low[x],dfn[y]);
	}
}

int id[maxn],bcc;

namespace solve{
	int head[maxn],ver[maxm],nex[maxm],tot;

	void inline AddEdge(int x,int y){
		ver[++tot]=y,nex[tot]=head[x],head[x]=tot;
	}

	int f1[maxn],f2[maxn];
	
	int ans;
	
	int dfs(int x,int pa){
		f1[x]=f2[x]=0;
		for(int i=head[x];i;i=nex[i]){
			int y=ver[i];
			if(y==pa) continue;
			dfs(y,x);
			if(f1[x]<f1[y]+1){
				f2[x]=f1[x];
				f1[x]=f1[y]+1;
			}
			else if(f2[x]<f1[y]+1){
				f2[x]=f1[y]+1;
			}
		}
		ans=max(ans,f1[x]+f2[x]);
		return ans;
	}

};

void dfs(int x,int pa){
	id[x]=bcc;
	for(int i=head[x];i;i=nex[i]){
		int y=ver[i];
		if(y==pa || bridge[i] || id[y]) continue;
		dfs(y,pa);
	}
}
int main(){
	scanf("%d%d",&n,&m);
	tot=1;
	for(int i=0;i<m;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		AddEdge(x,y);
		AddEdge(y,x);
	}
	for(int i=1;i<=n;i++)
		if(!dfn[i]) Tarjan(i,0);
//	for(int i=1;i<=n;i++)
//		cout<<low[i]<<‘ ‘<<i<<endl;
	for(int i=1;i<=n;i++)
		if(!id[i]) bcc++,dfs(i,0);
//	cout<<bcc<<endl;
//	for(int i=1;i<=n;i++)
//		cout<<id[i]<<endl;
	for(int i=2;i<=tot;i+=2){
		if(bridge[i]) {
			solve::AddEdge(id[ver[i]],id[ver[i^1]]);
			solve::AddEdge(id[ver[i^1]],id[ver[i]]);
//			cout<<id[ver[i]]<<‘ ‘<<id[ver[i^1]]<<endl;
		}
	}
	cout<<solve::dfs(1,0)<<endl;
}

  

以上是关于cf1000E的主要内容,如果未能解决你的问题,请参考以下文章

CF1000E We Need More Bosses [缩点,直径]

Linux e1000e网卡驱动

华为Eudemon1000E配置实例

如何从后台弹出片段

LabVIEW仪器控制:智能示波器(普源DS1000E)

如何正确关闭戴尔PowerEdge M1000E刀箱