QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#384676#3719. Dynamic GraphppppppTL 0ms0kbC++171.8kb2024-04-10 09:30:032024-04-10 09:30:03

Judging History

This is the latest submission verdict.

  • [2024-04-10 09:30:03]
  • Judged
  • Verdict: TL
  • Time: 0ms
  • Memory: 0kb
  • [2024-04-10 09:30:03]
  • Submitted

answer

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<stack>
#include<math.h>
#include<set>
#include<unordered_map>
#include<deque>
#define int long long
//__builtin_popcount();
//next_permutation(start,end)和prev_permutation(start,end)
using namespace std;
typedef pair<int, int>PII;
const int N = 3e3+ 10, M = 5e2 + 10;
int n,m,k;
int q[N];
vector<int>v[N];
int ru[N],st[N],mp[N],kl[N];
void dd(int x)
{
	if(st[x]==0)
	{
		st[x]=1;
		int si=v[x].size();
		for(int i=0;i<si;i++)
		{
			int tt=v[x][i];
			ru[tt]--;
		}		
	}
	else
	{
		st[x]=0;
		int si=v[x].size();
		for(int i=0;i<si;i++)
		{
			int tt=v[x][i];
			ru[tt]++;
		}
	}
}
void ff()
{
	int ans=0;
	vector<int>p[N];
	map<PII,int>jk;
	int hh=0,tt=-1;
	for(int i=1;i<=n;i++)
	{
		if(st[i]==0&&ru[i]==0)
		q[++tt]=i;
		mp[i]=ru[i];
	}
	while(hh<=tt)
	{
		int x=q[hh++];
		int si=v[x].size();
		for(int i=0;i<si;i++)
		{
			int xx=v[x][i];
			mp[xx]--;
			if(st[xx]==0)
			{
				int ss=p[x].size();
				for(int j=0;j<ss;j++)
				{
					int op=p[x][j];
					if(jk[{op,xx}]==0)ans++;
					jk[{op,xx}]=1;
				}
				ans++;
				jk[{x,xx}]=1;
				p[xx].push_back(x);
				if(mp[xx]==0)
				q[++tt]=xx;
			}
		}
	}
	cout<<ans<<endl;
} 
void df()
{
	while(cin>>n)
	{
		cin>>m>>k;
		for(int i=1;i<=n;i++)
		{
			v[i].clear();
			st[i]=0;
			ru[i]=0;
		}
		for(int i=1;i<=m;i++)
		{
			int x,y;
			cin>>x>>y;
			v[x].push_back(y);
			ru[y]++;
		}
		while(k--)
		{
			int x;
			cin>>x;
			dd(x);
//			for(int i=1;i<=n;i++)
//				cout<<ru[i]<<" "<<st[i]<<endl;
			ff();
		}
	}
}
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t = 1;
//	cin >> t;
	while (t--) {
		df();
	}
	return 0;
}

詳細信息

Test #1:

score: 0
Time Limit Exceeded

input:

300 38355 300
169 195
236 244
38 42
205 297
8 50
1 149
170 255
81 123
80 81
78 140
60 88
9 97
253 288
132 170
167 253
18 83
7 32
153 203
4 44
156 159
178 185
2 267
278 297
234 251
50 221
42 222
88 289
130 142
117 254
44 60
120 207
104 167
139 296
175 273
98 253
164 200
23 211
33 260
109 176
17 233
3...

output:

44488

result: