#include <bits/stdc++.h>
using namespace std;
#define FOR(i,k,n) for(int i = (int)(k); i < (int)(n); i++)
#define REP(i,n) FOR(i,0,n)
#define ALL(a) a.begin(), a.end()
#define MS(m,v) memset(m,v,sizeof(m))
typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<string> vs;
typedef pair<int, int> pii;
const int MOD = 1000000007;
const int INF = MOD + 1;
const ld EPS = 1e-12;
template<class T> T &chmin(T &a, const T &b) { return a = min(a, b); }
template<class T> T &chmax(T &a, const T &b) { return a = max(a, b); }

/*--------------------template--------------------*/

int n, m;
ld p;
vector<vi> g;
vector<ld> dp;

int main()
{
	cin.sync_with_stdio(false); cout << fixed << setprecision(10);
	cin >> n >> m >> p;
	g.resize(n, vi(n));
	dp.resize(1 << n);
	p /= 100.0;
	REP(i, m)
	{
		int a, b; cin >> a >> b;
		a--; b--;
		g[a][b]++;
		g[b][a]++;
	}
	REP(s, 1 << n)
	{
		int v = s&~s;
		dp[s] = 1.0;
		for (int t = (s - 1) & s; t > 0; t = (t - 1)&s)
		{
			if (!(t&(1 << v))) continue;
			int edge = 0;
			int u = s^t;
			REP(i, n)
			{
				if (!((t >> i) & 1)) continue;
				REP(j, n)
				{
					if (((u >> j) & 1) && g[i][j]) edge++;
				}
			}
			dp[s] -= dp[t] * pow(p, edge);
		}
	}
	cout << dp[(1 << n) - 1] << endl;
	return 0;
}