n, m, q = gets.split.map(&:to_i)

prob = {}
(1..m).each do
    i, j = gets.split.map(&:to_i) 
    prob[[i, j]] = q / 100.0
end

def f(n, prob)
    return 1 if n == 1
    return 0 if disconnected?(n, prob)
    i, j = prob.keys[0]

    new_prob = prob.dup
    new_prob.delete([i, j])
    ans = prob[[i, j]] * f(n, new_prob)

    new_prob = Hash.new(1.0)
    prob.each do |key, q|
        u, v = key
        x, y = key
        next if key == [i, j]
        x = j if u == i
        y = j if v == i
        new_prob[[x, y]] *= prob[[u, v]]
    end

    ans += (1.0 - prob[[i,j]]) * f(n-1, new_prob)
end

def disconnected?(n, prob)
    vs = prob.keys.flatten.uniq
    cc = Hash[*vs.zip(vs).flatten]
    return true if cc.size != n
    prob.keys.each do |i, j|
        cc1 = cc[i]
        cc2 = cc[j]
        cc.each do |k, c|
            cc[k] = cc2 if c == cc1
        end
    end
    cc.values.uniq.size > 1
end

p f(n, prob)

