Corporative Network UVA - 1329 加权并查集
2017-08-18 14:58
357 查看
贴出来做反面教材
这个代码蠢得不行,,,处在超时的边缘(好多浪费时间的点)
下篇博文还是这个题,会给出直接检索的代码
下下篇代码将给出压缩路径的代码,耗时极短,,,
这个代码蠢得不行,,,处在超时的边缘(好多浪费时间的点)
下篇博文还是这个题,会给出直接检索的代码
下下篇代码将给出压缩路径的代码,耗时极短,,,
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <set> #include <map> #include <stack> #include <queue> #include <ctype.h> #include <vector> #include <algorithm> #define in freopen("in.txt", "r", stdin) #define out freopen("out.txt", "w", stdout) // cout << " === " << endl; using namespace std; typedef long long ll; const int maxn = 20000 + 7, INF = 0x3f3f3f3f, mod = 1000; //1e9+7; int T, n; int f[maxn], d[maxn]; void update(int id) { if(f[id] == id) return ; update(f[id]); d[id] = abs(id-f[id]) % mod + d[f[id]]; } void solve() { char c; while(scanf("%c", &c)) { if(c == 'O') return; if(c == 'E') { int id; scanf("%d", &id); //st.insert(id); update(id); printf("%d\n", d[id]); } else if(c == 'I') { int a_, b_; scanf("%d %d", &a_, &b_); f[a_] = b_; d[a_] = abs(a_-b_) % mod; } } } int main() { scanf("%d", &T); while(T--) { scanf("%d", &n); for(int i = 0; i <= n; ++i) f[i] = i, d[i] = 0; solve(); } return 0; }
相关文章推荐
- C - Corporative Network UVA - 1329 -加权并查集
- Corporative Network UVA - 1329 加权并查集(压缩路径优化)
- C - Corporative Network UVA - 1329 (并查集)
- Corporative Network UVA - 1329(并查集的修改与查询)
- Corporative Network UVA - 1329
- UVA 1329 Corporative Network
- UVa 1329 Corporative Network (加权并查集)
- Corporative Network UVA - 1329 加权并查集
- UVALive 3027---Corporative Network+并查集的应用
- Corporative Network +uvalive+并查集
- UVA 1329 - Corporative Network
- uva 1329 - Corporative Network(加权并查集)
- Corporative Network UVALive - 3027 并查集
- LA3027:Corporative Network(并查集) uva 1329
- UVA-1329 - Corporative Network(并查集)
- UVALIVE 4487 Exclusive-OR(加权并查集)
- UVA 1329 - Corporative Network(带权并查集)
- UVALive 4487 Exclusive-OR 加权并查集神题
- UVA 1329 Corporative Network【并查集】
- HDU 3234 | UValive 4487 - Exclusive-OR (加权并查集)