不同于题解的思路,wa求调
查看原帖
不同于题解的思路,wa求调
938933
Dtw_楼主2024/5/15 20:51

我的思路就是单独处理每个关系,至于没有关系的就把他看成一个关系,他的时间就是他本身所需的时间。对每个关系的完成时间取最大值。 wa 30pts

#include<bits/stdc++.h>

using namespace std;

#define endl '\n'

#define TRACE 1
#define tcout TRACE && cout

#define fi first
#define se second

#define IN(o) insert(o)

#define int long long

#define fst ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

const int INF = 0x3f3f3f3f3f3f3f3f;

const int P = 998244353;

const int N = 1e6 + 10;

int n, m;

vector<int> G[N];

int in[N], a[N];

bool v[N];

queue<int> q;

signed main()
{
	cin >> n >> m;
	for(int i=1; i<=n; i++)
	{
		cin >> a[i];
	}
	for(int i=1; i<=m; i++)
	{
		int u, v;
		cin >> u >> v;
		G[u].push_back(v);
		in[v]++;
	}
	int res = 0;
	for(int i=1; i<=n; i++)
	{
		if(in[i] == 0 && v[i] == 0)
		{
			q.push(i);
			int cnt = 0;
			while(!q.empty())
			{
				int u = q.front();
				v[u] = 1;
				cnt += a[u];
				q.pop();
				for(auto v : G[u])
				{
					in[v]--;
					if(in[v] == 0)
					{
						q.push(v);
					}
				}
			}
			res = max(cnt, res);
		}
	}
	cout << res;
	return 0;
}



2024/5/15 20:51
加载中...