救救孩子吧,10分
查看原帖
救救孩子吧,10分
780107
joker_opof_qaq楼主2023/12/3 11:52
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<iomanip>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#include<map>
#include<list>
#include<stack>
#include<cctype>
#include<cstdlib>
using namespace std;
inline int read(){
	int x=0,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();}
	return x*f;
}
queue<int>q;
struct node{
	int v,nxt,w;
}e[3000001];
int head[3000001],ejs;
void add(int u,int v,int w){
	e[++ejs].v=v;
	e[ejs].nxt=head[u];
	head[u]=ejs;
	e[ejs].w=w;
}
int a[3000001],vis[3000001],dis[3000001];
void spfa(int u){
	memset(dis,-0x3f,sizeof(dis));
	dis[u]=0;
	q.push(u);
	while(!q.empty()){
		int u=q.front();q.pop();
		//cout<<u<<endl;
		vis[u]=0;
		for(int i=head[u];i;i=e[i].nxt){
			int v=e[i].v;
			if(dis[v]<dis[u]+e[i].w){
				dis[v]=dis[u]+e[i].w;
				if(!vis[v]){
					q.push(v);vis[v]=1;
				}
			}
		}
	}
}
int main(){
	int n=read(),m=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
		add(i,i+n,-a[i]);
		add(i+n,i+n+n,a[i]);
	}
	for(int i=1;i<=n;i++){
		int u=read(),v=read(),opt=read();
		add(u,v,0);
		add(u+n,v+n,0);
		add(u+n+n,v+n+n,0);
		if(opt==2){
			add(v,u,0);
			add(v+n,u+n,0);
			add(v+n+n,u+n+n,0);
		}
	}
	spfa(1);
	cout<<dis[3*n];
	return 0;
}

T*3,A了一个点,其他都是WA

2023/12/3 11:52
加载中...