luogu P1038 神经网络

点开这个你会看到很乱的题面反正我看不进去

这道题的题面

真的令人头大

而且说的不清楚

有很多坑点

首先,输入层神经元的阈(这个字读yu!!!不是阀)值不需要减掉

其次,最后一层不能清掉信号强度

再就是,最后会有负数所以判断的是c是否>0

放在任务计划里挺久,上周才切掉

一道裸的拓扑排序吧

#include<cstdio>
#define sev en
using namespace std;
#define N 110

int c[N],rd[N],cd[N],u[N];
int q[2000010],dis[N][N];

int main() {
//    printf("NULL");
//    return 0;
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i = 1; i <= n; i++) {
//        int u;
        scanf("%d%d",&c[i],&u[i]);
        if(!c[i])
        c[i] -= u[i];
    }
    for(int i = 1; i <= m; i++) {
        int from,to,w;
        scanf("%d%d",&from,&to);
        scanf("%d",&dis[from][to]);
//        dis[u][v] = w;
        rd[to]++;
        cd[from]++;
    }
    int h = 0,t = 1;
    for(int i = 1; i <= n; i++)
        if(rd[i] == 0)
            q[++t] = i;
    while(h < t) {
        h++;
        if(c[q[h]] > 0) {
            for(int i = 1; i <= n; i++)
                if(dis[q[h]][i] != 0) {
                    c[i] += dis[q[h]][i] * c[q[h]];
                    q[++t] = i;
                }
            if(cd[q[h]] != 0)
                c[q[h]] = 0;
        }
    }
    bool f = 0;
    for(int i = 1; i <= n; i++)
        if(c[i] > 0)
            printf("%d %d\n",i,c[i]),f = 1;
    if(f == 0)
        printf("NULL");
    return 0;
}
准备开始养成折叠的好习惯www

(又水了一篇blog23333

posted @ 2019-04-16 11:06  ./seven  阅读(114)  评论(0编辑  收藏  举报