求助一个神奇的程序
查看原帖
求助一个神奇的程序
576527
OI_AKed_me楼主2022/7/8 20:24
#include<bits/stdc++.h>
using namespace std;
namespace CCF_NB{
	#define ll long long
	#define ss stable_sort
	#define inf INT_MAX
	#define umap unordered_map
	#define uset unordered_set
	inline void read(string &str){char s=getchar();while(s==' '||s=='\n'||s=='\r'){s=getchar();}while(s!=' '&&s!='\n'&&s!='\r'){str+=s;s=getchar();}}
	inline void read(char &_c){_c=getchar();while(_c==' '||_c=='\n'||_c=='\r') _c=getchar();}
	inline void read(double &_d){scanf("%lf",&_d);}
	inline void write(string _str){printf("%s",_str.c_str());}
	inline void write(char _c){putchar(_c);}
	inline void write(double _d){printf("%f",_d);}
	template <typename T> inline void read(T& x){x=0;T f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();x=x*f;return;}
	template <typename T,typename ...Arg>inline void read(T& x,Arg& ...arg){read(x);read(arg...);}
	template <typename T>inline void write(T x){if(x<0)putchar('-'),x=-x;if(x<10)putchar(x+'0');else write(x/10),putchar(x%10+'0');}
	template <typename T,typename ...Arg>inline void write(T x,Arg ...arg){write(x);write(arg...);}
	template <typename T>inline T max(T x,T y){return (x>y)?x:y;}
	template <typename T,typename ...Arg>inline T max(T x,Arg ...arg){return max(x,max(arg...));}
	template <typename T>inline T min(T x,T y){return (x<y)?x:y;}
	template <typename T,typename ...Arg>inline T min(T x,Arg ...arg){return min(x,min(arg...));}
	#define max CCF_NB::max
	#define min CCF_NB::min
	template <typename T>inline T _get(){T _____;read(_____);return _____;}
	template <typename T>inline T gcd(T x,T y){return __gcd(x,y);}
	template <typename T,typename ...Arg>inline T gcd(T x,Arg ...arg){return gcd(x,gcd(arg...));}
}
using namespace CCF_NB;
int n,m,t[10005],B[10005],ans=0;
vector <int> v[10005];
bool b[10005];
int sum(int k){
	int cnt;
	if(b[k]) return t[k];
	for(int i=0;i<v[k].size();i++){
		cnt=max(sum(v[k][i]),cnt);
	}
	b[k]=1;
	t[k]=cnt+t[k];
	return t[k];
}
int main(){
	read(n,m);
	for(int i=1;i<=n;i++){
		read(t[i]);
	}
	while(m--){
		int x,y;
		read(x,y);
		v[x].push_back(y);
	}
	for(int i=1;i<=n;i++){
		ans=max(ans,sum(i));
//		write(ans,'\n');
	}
	write(ans);
	return 0;
}

中间的一句调试语句,如果不注释结果就是对的(至少我测的几组小数据是对的),但一注释掉就有问题,就好像在玩我一样,搞得我连程序都调不成,求助

2022/7/8 20:24
加载中...