/ Randle /

记录详情

Runtime Error

/in/foo.cc: In constructor 'io::io()':
/in/foo.cc:30:15: warning: operation on '((io*)this)->io::s' may be undefined [-Wsequence-point]
   s[ fread( s = op , 1 , 1 << 25 , stdin ) ] = 0;
             ~~^~~~
/in/foo.cc: In function 'void dfs(int)':
/in/foo.cc:49:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for( int i = 0 ; i < linker[x].size() ; i++ )
                   ~~^~~~~~~~~~~~~~~~~~
/in/foo.cc:50:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
   if( cur != fa[x] )
     ^
/in/foo.cc: In function 'void dp(int)':
/in/foo.cc:67:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for( int i = 0 ; i < linker[x].size() ; i++ )
                   ~~^~~~~~~~~~~~~~~~~~
# 状态 耗时 内存占用
#1 Runtime Error 38ms 48.371 MiB
#2 Runtime Error 25ms 48.371 MiB
#3 Runtime Error 24ms 48.359 MiB
#4 Runtime Error 28ms 46.332 MiB
#5 Runtime Error 28ms 48.352 MiB
#6 Runtime Error 27ms 48.371 MiB
#7 Runtime Error 48ms 63.199 MiB
#8 Runtime Error 49ms 62.875 MiB
#9 Runtime Error 45ms 62.598 MiB
#10 Runtime Error 47ms 62.078 MiB

代码

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <time.h>
#define MAXN 2000010
#define mod 19260817

using namespace std;

int n , m , x[ MAXN ] , y[ MAXN ] , fa[ MAXN ] , vis[ MAXN ] , belong[ MAXN ] , f[ MAXN ] , spe[ MAXN ] , cir , ans;
vector < int > linker[ MAXN ];

inline void update( int & x , int y )
{
	x += y;
	if( x >= mod ) x -= mod;
}

inline void addedge( int x , int y )
{
	linker[x].push_back( y ) , linker[y].push_back( x );
}

struct io
{
	char op[1 << 25] , * s;
	io()
	{
		s[ fread( s = op , 1 , 1 << 25 , stdin ) ] = 0;
	}
	inline int read()
	{
		register int u = 0;
		while( * s < 48 ) s++;
		while( * s > 32 )
			u = u * 10 + * s++ - 48;
		return u;
	}
} ip;

#define read ip.read

#define cur linker[x][i]

void dfs( int x )
{
	vis[x] = 1;
	for( int i = 0 ; i < linker[x].size() ; i++ )
		if( cur != fa[x] )
			if( !vis[ cur ] ) fa[ cur ] = x , dfs( cur );
			else if( !belong[ cur ] )
			{
				int v = x;
				spe[ ++cir ] = 1;
				while( 1 )
				{
					belong[v] = cir;
					if( v == cur ) break;
					v = fa[v];
				}
			}
}

void dp( int x )
{
	for( int i = 0 ; i < linker[x].size() ; i++ )
		if( cur != fa[x] )
			fa[ cur ] = x , dp( cur ) , update( ans , f[x] * ( spe[x] ? 2ll : 1ll ) * f[ cur ] % mod ) , update( f[x] , f[ cur ] );
	if( spe[x] ) update( ans , f[x] ) , update( f[x] , f[x] + 1 );
}

int main()
{
	n = read() , m = read();
	for( register int i = 1 ; i <= m ; i++ ) addedge( x[i] = read() , y[i] = read() );
	dfs( 1 );
	for( register int i = 1 ; i <= n ; i++ )
	{
		linker[i].clear();
		if( !belong[i] )
			belong[i] = ++cir;
	}
	for( register int i = 1 ; i <= m ; i++ )
		if( belong[ x[i] ] != belong[ y[i] ] )
			addedge( belong[ x[i] ] , belong[ y[i] ] );
	memset( fa , 0 , sizeof( fa ) );
	dp( 1 );
	cout << ans << endl;
	return 0;
}

信息

递交者
类型
递交
题目
江边沼泽淹死村民(第一个ac奖励30元)
题目数据
下载
语言
C++
递交时间
2017-10-12 21:08:58
评测时间
2017-10-12 21:08:58
评测机
分数
0
总耗时
362ms
峰值内存
63.199 MiB