网站开发三层,用ps做网站首页顶部图片,东营建筑信息网,建立专业的官方网站正题
题目链接:https://www.luogu.org/recordnew/lists?uid52918pidP1038 题目大意
有n个点#xff0c;输入点给出权值#xff0c;其余点的权值为 Ci∑i,j∈EWi,jCj−UiCi∑i,j∈EWi,jCj−UiCi0Ci0的话就不算 求输出层的权值 解题思路
求出一个点之前要求出…正题
题目链接:https://www.luogu.org/recordnew/lists?uid52918pidP1038 题目大意
有n个点输入点给出权值其余点的权值为
Ci∑i,j∈EWi,jCj−UiCi∑i,j∈EWi,jCj−UiC_i=\sum_{i,j\in E}W_{i,j}C_j-U_i
Ci0Ci0C_i的话就不算 求输出层的权值 解题思路
求出一个点之前要求出到达他的所有点所以我们用拓扑序计算就好了。 code
#includecstdio
#includequeue
#define N 101
using namespace std;
struct node{int to,next,w;
}a[N*N];
int tot,n,m,in[N],ls[N],c[N],u,x,y,w;
queueint q;
void addl(int x,int y,int c)//加边
{a[tot].toy;a[tot].nextls[x];a[tot].wc;ls[x]tot;in[y];
}
void bfs()
{while(!q.empty()){int xq.front();if(c[x]0){for(int ils[x];i;ia[i].next){int ya[i].to;in[y]--;c[y]a[i].w*c[x];//计算权值if(!in[y])//权值已经计算玩q.push(y);}}else{for(int ils[x];i;ia[i].next){int ya[i].to;in[y]--;if(!in[y])q.push(y);} }//为0不计算权值q.pop();}
}
int main()
{scanf(%d%d,n,m);for(int i1;in;i){scanf(%d%d,c[i],u);if(c[i]) q.push(i);else c[i]-u;}for(int i1;im;i){scanf(%d%d%d,x,y,w);addl(x,y,w);}bfs();bool flagtrue;for(int i1;in;i)if(!ls[i]) {if(c[i]0)printf(%d %d\n,i,c[i]),flagfalse;}if(flag) printf(NULL);
}