Не давно я наткнулся на эту задачу И уже довольно долгое время ломаю голову, почему и где программка зацикливается. Я надеюсь, вы — как опытные гуру, сможете мне помочь...
include
include <string.h>
include
include
include
include
include
include
include
include
using namespace std; int cat[1000]={0}; bool color[5000]={0}; int a[5000][5000]={0},n,k,c=0; int dfs(int i) { bool f=true; color[i]=1; if (cat[i]<=k) {for (int j=1;j<=n;j++) { if (color[j]==0&&a[i][j]==1) { f=false;if (cat[j]!=0) cat[j]+=cat[i];dfs(j);}} if (f) c++;}
return 0;
} int main() { cin>>n>>k; for (int i=1; i<=n; i++) cin>>cat[i]; for (int j=1; j<n;j++) {int x,y; cin>>x>>y; a[x][y]=1;a[y][x]=1;} dfs(1); cout<<c; return 0; } Заранее спасибо)