比赛 图的简单问题 评测结果 AAAAAAA
题目名称 神经网络 最终得分 100
用户昵称 TARDIS 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2017-05-14 20:40:13
显示代码纯文本
#include<bits/stdc++.h>
#define UP
using namespace std;
const int maxn=210;
struct edge{
	int from,to,cost;
	edge(int u,int v,int d):from(u),to(v),cost(d){}
}; 
vector<edge> E;
vector<int> G[maxn];
queue<int> que;
int GG[maxn][maxn];
int c[maxn],u[maxn],n,p,temp1,temp2,cnt,temp3,ind[maxn],outd[maxn];
int bstart[maxn];
bool inque[maxn],notfinal[maxn];
inline void add_edge(int from,int to,int cost){
	E.push_back(edge(from,to,cost));
	int num=E.size();
	G[from].push_back(num-1);
	ind[to]++,outd[from]++;
	GG[from][to]=cost;
	notfinal[from]=1;
}
inline void in(){
	#ifdef UP
	freopen("sjwl.in","r",stdin);
	freopen("sjwl.out","w",stdout);
	#endif
	#ifdef D
	freopen("a.txt","r",stdin);
	#endif
	scanf("%d%d",&n,&p);
	for (int i=1;i<=n;i++){
		scanf("%d%d",&c[i],&u[i]);
		if (c[i]) bstart[++cnt]=i,que.push(i),inque[i]=1;
		else c[i]=-1*u[i]; 
	}
	for (int i=1;i<=p;i++){
		scanf("%d%d%d",&temp1,&temp2,&temp3);
		add_edge(temp1,temp2,temp3);
	}
}
inline void bfs(int now,int from,int go){
	int n=G[now].size();
	c[now]+=c[from]*GG[from][now];
	for (int i=1;i<=n;i++){
		
	}
}
inline void deal(){
	int now,temp;
	while(!que.empty()){
		now=que.front();que.pop();inque[now]=0;
		int num=G[now].size();
		for (int i=0;i<num;i++){
			edge &e=E[G[now][i]];
			//if(outd[now]==0&&c[now]>0) final[now]=1;
			if (c[now]>0){
				c[e.to]+=e.cost*c[now];
				if (!inque[e.to]) que.push(e.to),inque[e.to]=1;
			}
		}
	}
}
inline void pr(){
	bool flag=1;
	for (int i=1;i<=n;i++){
		if (!notfinal[i]&&c[i]>0){
			printf("%d %d\n",i,c[i]);flag=0;
		}
	}
	if (flag) printf("NULL\n");
}
int Main(){
	in();
	deal();
	pr();
	return 0;
}
int main(){;}
int mylove=Main();