Submission #211244

#TimeUsernameProblemLanguageResultExecution timeMemory
211244LawlietAmusement Park (CEOI19_amusementpark)C++17
19 / 100
3076 ms512 KiB
#include <bits/stdc++.h>

using namespace std;
typedef long long int lli;
typedef pair<int,int> pii;

const int MAXN = 20;

int n, m;

int ingrau[MAXN];

vector< int > adj[MAXN];

vector< pii > edges;

bool hasCycle()
{
	queue< int > q;

	for(int i = 1 ; i <= n ; i++)
		if( ingrau[i] == 0 ) q.push( i );

	int cnt = 0;

	while( !q.empty() )
	{
		int cur = q.front();
		q.pop();

		cnt++;

		for(int i = 0 ; i < adj[cur].size() ; i++)
		{
			int viz = adj[cur][i];

			if( --ingrau[viz] == 0 )
				q.push( viz );
		}
	}

	return ( cnt != n );
}

int main()
{
	scanf("%d %d",&n,&m);

	for(int i = 1 ; i <= m ; i++)
	{
		int U, V;
		scanf("%d %d",&U,&V);

		edges.push_back( { U , V } );
	}

	lli ans = 0;

	for(int mask = 0 ; mask < (1 << m) ; mask++)
	{
		for(int i = 1 ; i <= n ; i++)
		{
			ingrau[i] = 0;
			adj[i].clear();
		}

		for(int i = 0 ; i < m ; i++)
		{
			int U = edges[i].first;
			int V = edges[i].second;

			if( mask & (1 << i) ) swap( U , V );
			
			ingrau[V]++;
			adj[U].push_back( V );
		}

		if( !hasCycle() ) ans += __builtin_popcount( mask );
	}

	printf("%lld\n",ans);
}

Compilation message (stderr)

amusementpark.cpp: In function 'bool hasCycle()':
amusementpark.cpp:33:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 0 ; i < adj[cur].size() ; i++)
                   ~~^~~~~~~~~~~~~~~~~
amusementpark.cpp: In function 'int main()':
amusementpark.cpp:47:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~
amusementpark.cpp:52:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d",&U,&V);
   ~~~~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...