首页 > 其他分享 >Railway HDU - 3394 求调

Railway HDU - 3394 求调

时间:2024-06-20 14:11:56浏览次数:21  
标签:HDU 求调 int dcc ++ low Railway include define

做个记录,如果有人愿意帮我调蒟蒻将感激不尽qwq

#include <iostream>
#include <iomanip>
#include <cstdio>
#include <vector>
#include <stack>
#include <queue>
#include <bitset>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <cstring>
#include <sstream>
#include <algorithm>
#include <cmath>
#include <ctime>
#include <cassert>
#define x first
#define y second
#define pb push_back
#define eb emplace_back
#define pf push_front
#define desktop "C:\\Users\\incra\\Desktop\\"
#define IOS ios :: sync_with_stdio (false),cin.tie (0),cout.tie (0)
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair <int,int> PII;
const int dx[] = {1,0,-1,0},dy[] = {0,-1,0,1};
template <typename T1,typename T2> bool tomax (T1 &x,T2 y) {
	if (y > x) return x = y,true;
	return false;
}
template <typename T1,typename T2> bool tomin (T1 &x,T2 y) {
	if (y < x) return x = y,true;
	return false;
}
LL power (LL a,LL b,LL p) {
	LL ans = 1;
	while (b) {
		if (b & 1) ans = ans * a % p;
		a = a * a % p;
		b >>= 1;
	}
	return ans;
}
int fastio = (IOS,0);
#define puts(s) cout << s << endl
const int N = 100010,M = 200010;
int n,m;
vector <int> g[N];
int dfn[N],low[N],timestamp;
int stk[N],top;
vector <int> dcc[N];
int dcc_cnt;
int ans1,ans2;
bool st[N];
void get (int x) {
	memset (st,false,sizeof (st));
	for (int y : dcc[x]) st[y] = true;
	int ecnt = 0;
	for (int u : dcc[x]) {
		for (int v : g[u]) {
			if (st[v]) ecnt++;
		}
	}
	ecnt /= 2;
	if (ecnt > dcc[x].size ()) ans2 += ecnt;
}
void tarjan (int u,int fa) {
	dfn[u] = low[u] = ++timestamp;
	stk[++top] = u;
	for (int v : g[u]) {
		if (v == fa) continue;
		if (!dfn[v]) {
			tarjan (v,u);
			tomin (low[u],low[v]);
			if (low[v] >= dfn[u]) {
				if (low[v] > dfn[u]) ans1++;
				dcc_cnt++;
				dcc[dcc_cnt].pb (u);
				while (stk[top + 1] != v) dcc[dcc_cnt].pb (stk[top--]);
				get (dcc_cnt);
			}
		}
		else tomin (low[u],dfn[v]);
	}
}
int main () {
	while (cin >> n >> m,n) {
		for (int i = 1;i <= n;i++) g[i].clear (),dcc[i].clear ();
		memset (dfn,0,sizeof (dfn));
		top = dcc_cnt = timestamp = 0;
		while (m--) {
			int a,b;
			cin >> a >> b;
			a++,b++;
			g[a].pb (b),g[b].pb (a);
		}
		ans1 = 0,ans2 = 0;
		for (int i = 1;i <= n;i++) {
			if (!dfn[i]) tarjan (i,-1);
		}
		cout << ans1 << ' ' << ans2 << endl;
	}
	return 0;
}

标签:HDU,求调,int,dcc,++,low,Railway,include,define
From: https://www.cnblogs.com/incra/p/18258543

相关文章

  • hdu2845dp问题
    看了一眼题目,简单dp问题,但超时了一晚上,试了各种方法无法解决,最终放弃java,改用C直接过,我哭了。。。。#include<stdio.h>#include<string.h>#definemaxn200010intdp[maxn],ans[maxn],map[maxn];intmax(intx,inty){returnx>y?x:y;}intmain(){inti,j;......
  • hdu1421搬寝室dp
    状态转移方程if(j==2*i+1){ dp[j][i]=dp[j-2][i-1]+(val[j]-val[j-1])*(val[j]-val[j-1]); }else{ dp[j][i]=Math.min(dp[j-1][i],dp[j-2][i-1]+(val[j]-val[j-1])*(val[j]-val[j-1])); } importjava.util.Arrays;importjava.util.S......
  • HDU 3642 (扫描线、三维体积相交)
    题意在三维空间中给你n个长方体,求空间中被这些长方体覆盖至少3次以上的区域的总体积。思路这题没给数据组数T的范围,大致看了一下其他人的都是枚举z来做的,所以我这边也是同样的做法转换成二维的扫描线来做,数组ci表示被覆盖i次的区间标记,具体扫描线怎么实现可以看我上篇博客。......
  • hdu5532
    给定一个序列,询问是否能删除一个数让它成为非递减或者非递增的序列。nlogn一直过不了,所以选择了以下方式。。。因为删除一个嘛,先证明删除一个能不能是非递减的(非递增的把序列倒过来搞一次就行了)首先,对一个序列前后两个数做差比如说序列31415 做差后(即1-3,4-1,1-4,5-1)是......
  • hdu1087简单动态规划
    求最长子序列的和。dp[i]=max(dp[i],dp[j]+xx[i])。importjava.util.Arrays;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){//TODO自动生成的方法存根Scannersc=newScanner(System.in);......
  • hdu1257最少拦截系统
    Dilworth定理通俗地讲就是对于一个偏序集,最少链划分等于最长反链长度。通俗点就是一个数列最少的不上升(<=)子序列的条数等于该数列最长上升(>)子序列的长度就是求最长有序子序列packagebag;importjava.util.Arrays;importjava.util.Scanner;publicclasshdu1257{......
  • hdu1069java
    给你n个方块,其中每个方块具有它的长宽高(方块可以任意旋转放置),方块数量不限。现在你要堆一个高塔,上面方块的长和宽必须严格小于下面方块的长和宽。问你能堆起来的最大高度。先将方块以长和宽按从小到大排序,然后从小到大以此为底,求出最大高度。dp[i]=max(dp[j])+i.height(j.x<i.x......
  • hduoj 1506(笛卡尔树)
    Problem-1506(hdu.edu.cn)题意坐标轴给定一些矩形,紧密排在一起,每个矩形宽度固定为1,问形成的图案中最大可以组成的矩形面积。思路常规思路是可以用单调栈分别找两边的合法边界,这里使用笛卡尔树。笛卡尔树实现了堆的性质,并且对原数组建立的笛卡尔树进行中序遍历为原数组的顺......
  • hdu4417(权值离散化后建立主席树)
    Problem-4417(hdu.edu.cn)马里奥是举世闻名的水管工。他“魁梧”的身材和惊人的跳跃能力让我们想起了。现在可怜的公主又遇到了麻烦,马里奥需要拯救他的爱人。我们将通往老板城堡的道路视为一条线(长度为n),在每个整数点i上都有一块高度为hi的砖。现在的问题是,如果马里奥可......
  • hdu4348(主席树区间修改)
    Problem-4348(hdu.edu.cn)BackgroundToTheMoon是一款独立游戏,于2011年11月发布,是一款由RPGMaker提供支持的角色扮演冒险游戏。《去月球》的前提是基于一种技术,该技术使我们能够永久地重建垂死之人的记忆。在这个问题上,我们将给你一个机会,实现幕后的逻辑。您已经获得了N......