比赛 |
图的简单问题 |
评测结果 |
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();