Polynomial $P$ with non-negative real coefficients and function $f:\mathbb{R}^+\to \mathbb{R}^+$ are given such that for all $x, y\in \mathbb{R}^+$ we have
$$f(x+P(x)f(y)) = (y+1)f(x)$$
(a) Prove that $P$ has degree at most 1. 
(b) Find all function $f$ and non-constant polynomials $P$ satisfying the equality. 
1. **Denote the assertion**: Let \( Q(x, y) \) be the assertion of the functional equation \( f(x + P(x) f(y)) = (y + 1) f(x) \) for all \( x, y \in \mathbb{R}^+ \).

2. **Claim 1: \( f \) is injective**:
   - Suppose \( f(a) = f(b) \) for some \( a, b > 0 \).
   - From \( Q(x, a) \) and \( Q(x, b) \), we have:
     \[
     f(x + P(x) f(a)) = (a + 1) f(x) \quad \text{and} \quad f(x + P(x) f(b)) = (b + 1) f(x)
     \]
   - Since \( f(a) = f(b) \), it follows that:
     \[
     (a + 1) f(x) = (b + 1) f(x)
     \]
   - Given \( f(x) \neq 0 \) for all \( x > 0 \), we conclude \( a = b \). Thus, \( f \) is injective. \(\blacksquare\)

3. **Claim 2: \( P \) has degree at most 1**:
   - Consider the assertion \( Q(x, y^2 + 2y) \):
     \[
     f(x + P(x) f(y^2 + 2y)) = (y + 1)^2 f(x)
     \]
   - Also, consider \( Q(x + P(x) f(y), y) \):
     \[
     f(x + P(x) f(y) + P(x + P(x) f(y)) f(y)) = (y + 1) f(x + P(x) f(y)) = (y + 1)^2 f(x)
     \]
   - By injectivity of \( f \), we have:
     \[
     x + P(x) f(y) + P(x + P(x) f(y)) f(y) = x + P(x) f(y^2 + 2y)
     \]
   - Simplifying, we get:
     \[
     P(x) f(y^2 + 2y) = P(x) f(y) + P(x + P(x) f(y)) f(y)
     \]
   - Assume \( \deg P = D > 1 \). Let \( y = 1 \):
     \[
     P(x) f(3) = P(x) f(1) + P(x + P(x) f(1)) f(1)
     \]
   - This implies \( D^2 = D \), which is a contradiction. Hence, \( P \) must have degree at most 1. \(\blacksquare\)

4. **Form of \( P \)**:
   - Since \( P \) has degree at most 1, let \( P(x) = mx + n \) with \( m, n \geq 0 \).

5. **Claim 3: \( f \) is surjective**:
   - By the functional equation, for any \( t > 0 \), there exists \( d > 0 \) such that \( f(d) = \frac{t}{mx + n} \).
   - Thus, \( f \) is surjective.

6. **Claim 4: \( f \) is strictly increasing**:
   - From \( Q(x, d) \), we have:
     \[
     f(x + t) = (d + 1) f(x) > f(x)
     \]
   - Hence, \( f \) is strictly increasing. \(\blacksquare\)

7. **Behavior of \( f \) as \( x \to 0 \)**:
   - By the strict monotonicity and continuity of \( f \), we have:
     \[
     \lim_{x \to 0} f(x) = 0
     \]

8. **Form of \( f \)**:
   - Given \( P(x) = mx \) (since \( n = 0 \) leads to contradictions), we have:
     \[
     f(m f(y) + 1) = \frac{y + 1}{m}
     \]
   - Let \( x = 1 \):
     \[
     f(1) = \frac{1}{m}
     \]
   - By induction, \( f(z) = \frac{z}{m} \) for \( z \in \mathbb{N} \).
   - Since \( f \) is continuous and strictly increasing, we conclude:
     \[
     f(x) = \frac{x}{m} \quad \forall x \in \mathbb{R}^+
     \]

9. **Verification**:
   - Substitute \( f(x) = \frac{x}{m} \) and \( P(x) = mx \) into the original equation:
     \[
     f(x + P(x) f(y)) = f(x + mx \cdot \frac{y}{m}) = f(x + xy) = \frac{x + xy}{m} = (y + 1) \frac{x}{m} = (y + 1) f(x)
     \]
   - The equation holds true.

The final answer is \( \boxed{ P(x) = mx } \) and \( f(x) = \frac{x}{m} \) for all \( x \in \mathbb{R}^+ \) with \( m > 0 \).