답안 #144993

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
144993 2019-08-18T10:41:09 Z cheetose 전압 (JOI14_voltage) C++11
100 / 100
175 ms 18780 KB
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<vector>
#include<queue>
#include<bitset>
#include<string>
#include<stack>
#include<set>
#include<unordered_set>
#include<map>
#include<unordered_map>
#include<cstring>
#include<complex>
#include<cmath>
#include<iomanip>
#include<numeric>
#include<algorithm>
#include<list>
#include<functional>
#include<cassert>
#define mp make_pair
#define pb push_back
#define X first
#define Y second
#define y0 y12
#define y1 y22
#define INF 987654321
#define PI 3.141592653589793238462643383279502884
#define fup(i,a,b,c) for(int (i)=(a);(i)<=(b);(i)+=(c))
#define fdn(i,a,b,c) for(int (i)=(a);(i)>=(b);(i)-=(c))
#define MEM0(a) memset((a),0,sizeof(a));
#define MEM_1(a) memset((a),-1,sizeof(a));
#define ALL(a) a.begin(),a.end()
#define SYNC ios_base::sync_with_stdio(false);cin.tie(0)
using namespace std;
typedef long long ll;
typedef long double ld;
typedef double db;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int, int> Pi;
typedef pair<ll, ll> Pll;
typedef pair<ld, ld> Pd;
typedef vector<int> Vi;
typedef vector<ll> Vll;
typedef vector<double> Vd;
typedef vector<Pi> VPi;
typedef vector<Pll> VPll;
typedef vector<Pd> VPd;
typedef tuple<int, int, int> iii;
typedef tuple<int,int,int,int> iiii;
typedef tuple<ll, ll, ll> LLL;
typedef vector<iii> Viii;
typedef vector<LLL> VLLL;
typedef complex<double> base;
const ll MOD = 1000000007;
ll POW(ll a, ll b, ll MMM = MOD) {ll ret=1; for(;b;b>>=1,a=(a*a)%MMM)if(b&1)ret=(ret*a)% MMM; return ret; }
ll gcd(ll a, ll b) { return b ? gcd(b, a%b) : a; }
ll lcm(ll a, ll b) { if (a == 0 || b == 0)return a + b; return a*(b / gcd(a, b)); }
int dx[] = { 0,1,0,-1,1,1,-1,-1 }, dy[] = { 1,0,-1,0,1,-1,1,-1 };

int n,m,k;
VPi v[100001];
int ee[200001],ev[100001],oe[200001],ov[100001];
int depth[100001],num[100001],c;
void dfs(int N,int p, int d)
{
	num[N]=++c;
	depth[N]=d;
	for(auto P:v[N])
	{
		if(P.Y==p || num[P.X]>num[N])continue;
		if(num[P.X])
		{
			if((depth[N]-depth[P.X]) &1)
			{
				ee[P.Y]++;
				ev[N]++,ev[P.X]--;
			}
			else
			{
				oe[P.Y]++;
				ov[N]++,ov[P.X]--,k++;
			}
		}
		else
		{
			dfs(P.X,P.Y,d+1);
			ov[N]+=ov[P.X];
			ev[N]+=ev[P.X];
		}
	}
	oe[p]+=ov[N],ee[p]+=ev[N];
}
int main() {
	scanf("%d%d",&n,&m);
	fup(i,1,m,1)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		v[x].pb(mp(y,i));
		v[y].pb(mp(x,i));
	}
	fup(i,1,n,1)if(!num[i])dfs(i,0,1);
	int ans=0;
	fup(i,1,m,1)if(oe[i]==k && ee[i]==0)ans++;
	printf("%d",ans);
}

Compilation message

voltage.cpp: In function 'int main()':
voltage.cpp:97:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&m);
  ~~~~~^~~~~~~~~~~~~~
voltage.cpp:101:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d",&x,&y);
   ~~~~~^~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 2936 KB Output is correct
2 Correct 5 ms 2684 KB Output is correct
3 Correct 5 ms 2808 KB Output is correct
4 Correct 5 ms 2808 KB Output is correct
5 Correct 6 ms 2812 KB Output is correct
6 Correct 5 ms 2808 KB Output is correct
7 Correct 5 ms 2808 KB Output is correct
8 Correct 5 ms 2808 KB Output is correct
9 Correct 5 ms 2808 KB Output is correct
10 Correct 5 ms 2808 KB Output is correct
11 Correct 5 ms 2808 KB Output is correct
12 Correct 5 ms 2808 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 62 ms 9460 KB Output is correct
2 Correct 97 ms 12920 KB Output is correct
3 Correct 56 ms 9324 KB Output is correct
4 Correct 98 ms 14144 KB Output is correct
5 Correct 11 ms 3704 KB Output is correct
6 Correct 86 ms 12064 KB Output is correct
7 Correct 97 ms 15592 KB Output is correct
8 Correct 96 ms 15608 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 35 ms 9196 KB Output is correct
2 Correct 50 ms 15608 KB Output is correct
3 Correct 53 ms 15544 KB Output is correct
4 Correct 4 ms 2680 KB Output is correct
5 Correct 68 ms 11512 KB Output is correct
6 Correct 89 ms 9980 KB Output is correct
7 Correct 142 ms 12536 KB Output is correct
8 Correct 90 ms 13560 KB Output is correct
9 Correct 91 ms 13688 KB Output is correct
10 Correct 110 ms 12280 KB Output is correct
11 Correct 93 ms 9976 KB Output is correct
12 Correct 92 ms 11340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 61 ms 11252 KB Output is correct
2 Correct 81 ms 18664 KB Output is correct
3 Correct 6 ms 3448 KB Output is correct
4 Correct 98 ms 13560 KB Output is correct
5 Correct 91 ms 14584 KB Output is correct
6 Correct 103 ms 13572 KB Output is correct
7 Correct 151 ms 17016 KB Output is correct
8 Correct 149 ms 17404 KB Output is correct
9 Correct 165 ms 15852 KB Output is correct
10 Correct 169 ms 18424 KB Output is correct
11 Correct 159 ms 15992 KB Output is correct
12 Correct 174 ms 18400 KB Output is correct
13 Correct 136 ms 15084 KB Output is correct
14 Correct 174 ms 18780 KB Output is correct
15 Correct 175 ms 18528 KB Output is correct
16 Correct 171 ms 17256 KB Output is correct
17 Correct 142 ms 16092 KB Output is correct
18 Correct 120 ms 15380 KB Output is correct