样例过了,但是全WA
查看原帖
样例过了,但是全WA
520847
HOILAI_CEO楼主2023/7/20 08:56
#include <iostream>
#include <vector>
using namespace std;

const int maxn = 100000;
vector<int> adj[maxn];
int n, m, sccnum;
struct Node 
{
	int to, from, v;
} e[maxn];
bool visited[maxn];
int maxWeightSum = 0;

void DFS(int u, int weightSum)
{
	visited[u] = true;
	weightSum += e[u].v;
	maxWeightSum = max(maxWeightSum, weightSum);
	
	for (int i = 0; i < adj[u].size(); i++)
	{
		int idx = adj[u][i];
		int v = e[idx].to;
		if (!visited[v]) {
			DFS(v, weightSum);
		}
	}
}

int main() {
	cin >> n >> m;
	
	for (int i = 1; i <= n; i++) 
	{
		cin >> e[i].v;
	}
	
	for (int i = 1; i <= m; i++)
	{
		cin >> e[i].from >> e[i].to;	
		adj[e[i].from].push_back(i);
	}
	
	for (int i = 1; i <= n; i++)
	{
		if (!visited[i]) 
		{
			DFS(i, 0);
		}
	}
	
	cout << maxWeightSum << endl;
	
	return 0;
}

2023/7/20 08:56
加载中...