POJ 1926 Pollution 直接模拟也能过!!
2012-06-08 10:55
387 查看
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> using namespace std; double capcity[105]; const double eps = 1e-5; int point[105][105]; int n,m; double Abs(double f) { return f>0?f:-f; } void solve() { while(true) { double temp[105]; memset(temp,0,sizeof(temp)); for(int i=0;i<n;i++) { if(capcity[i]>eps) { if(point[i][0]==0) {temp[i]=capcity[i];} else { double xi = capcity[i]/point[i][0]; for(int j=1;j<=point[i][0];j++) temp[point[i][j]] += xi; } } } int i; for( i=0;i<n;i++) if(Abs(temp[i]-capcity[i])>eps) break; if(i==n) break; for(int i=0;i<n;i++) capcity[i]= temp[i]; } for(int i=0;i<n;i++) printf("%.3lf\n",capcity[i]); puts(""); } void init() { int test; scanf("%d",&test); while(test--) { memset(point,0,sizeof(point)); scanf("%d%d",&n,&m); for(int i=0;i<n;i++) scanf("%lf",&capcity[i]); for(int i=0;i<m;i++) { int a,b; scanf("%d%d",&a,&b); a--,b--; point[a][0]++,point[a][point[a][0]]=b; point[b][0]++,point[b][point[b][0]]=a; } solve(); } } int main() { init(); return 0; }点击打开链接
相关文章推荐
- (待切)POJ 1926 Pollution 模拟/并查集
- poj 3087 直接模拟
- poj 3087 直接模拟
- poj 1926 Pollution 并查集解决污染计算问题
- poj 3087 直接模拟
- poj 3087 直接模拟
- poj_1611_直接模拟
- Poj 1926 Pollution
- poj 3087 直接模拟
- poj 3087 直接模拟
- POJ 字符串的全排列 水题也搞我 多种方法 DFS,STL,直接模拟。。。。。。
- POJ-1926 Pollution
- POJ-1926 Pollution
- poj -- 2833 The Average(优先队列或堆或直接模拟)
- poj 3087 直接模拟
- POJ 1926 Pollution
- poj 3087 直接模拟
- poj 1926 Pollution
- poj 1176 Party Lamps 模拟
- poj 2632 Crashing Robots【模拟】【略坑~】【刷题计划】