require 'set'

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

edges = Hash.new(1)
m.times do
    u, v = gets.split.map(&:to_i)
    key = Set[u, v]
    edges[key] *= P / 100.0
end


def f(edges, n)
    return 1.0 if n == 1
    return 0.0 if ! connected(edges, n)
    e = edges.keys[0]
    u0, v0 = e.to_a
    q = edges[e]

    deleted = edges.dup
    deleted.delete(e)

    contracted = Hash.new(1)
    edges.each do |f, prob|
        next if f == e
        u, v = f.to_a
        u = u0 if u == v0
        v = u0 if v == v0
        key = Set[u, v]
        contracted[key] *= prob
    end

    return q * f(deleted, n) + (1-q) * f(contracted, n-1)
end


def connected(edges, n)
    return true if n == 1
    return false if edges.size < n - 1
    components = []
    edges.each_key do |key|
        u, v = key.to_a
        cc1 = components.find {|cc| cc.include?(u)}
        cc2 = components.find {|cc| cc.include?(v)}
        if !cc1 && !cc2
            components << Set[u, v]
        elsif cc1 && cc2
            if cc1 != cc2
                cc2.each {|w| cc1 << w}
                components.delete(cc2)
            end
        elsif cc1
            cc1 << v
        else
            cc2 << u
        end
    end
    !components.empty? && components[0].size == n
end

printf("%.10f\n", f(edges, n).to_f)