神经网络

http://www.luogu.org/problem/show?pid=1038

noip2003第一题:汗,坑爹,做不来(-_-)||.就是符号坑我。

#include <iostream>
#include <fstream>
using namespace std;
//#define  cin fin 
//#define  cout fout
ifstream fin("fin.in");
ofstream fout("fout.out"); 
int n,p;                             //n是网络中所有神经元的数目,p表示边;
int f[101]={0},j[101]={0},k[101][101]={0};
int w[101]={0},z[101][101]={0};     // f[]: 神经元i最初状态; j[]: 其阈值(Ui) k[][]: 边 
void input()                       //输入函数 
{
  fin>>n>>p;
  for(int i=1;i<=n;i++)
  fin>>f[i]>>j[i];
  int m,y,x;
  for(int i=1;i<=p;i++)
  {
     fin>>m>>y>>x;
     k[m][y]=x;
     z[m][y]=1;
  }
}
void abc(int i)
{
     int y=1;
   for(int x=1;x<=n;x++)
   {                 
     if(z[i][x]){                                    //找到与此神经元相连的下一层神经元
                   f[x]=k[i][x]*f[i]-j[x];   
                   if(f[x]>0)             //如果f[x]>0 则神经元向下一层输出信号(即再次调用abc( );) 
                   abc(x);
                   f[x]=0;
                   y=0;
                 }
   }
   if(y) w[i]=f[i];
}
void algorithm()
{
  for(int i=1;i<=n;i++)     
  {
     if(f[i]>0)  abc(i);   //找到输入层在调用函数 abc(输入层序号); 
  }  
}
void output()             
{ 
   int m=1;
   for(int i=1;i<=n;i++)
   if(w[i]>0)  {m=0;fout<<i<<" "<<w[i]<<"
";} 
   if(m)  fout<<"NULL";
}
int main()
{
   input();
   algorithm();  //algorithm:算法 
   output();
}

偶的代码,完败啊!!!

原文地址:https://www.cnblogs.com/1234----/p/5175369.html