Tarjan求lca

https://vjudge.net/problem/POJ-1330

[原创] SD从零开头51 信用控制范围

发散的团体结构Decentralized Organization

      信用控制范围是贰个为客户钦赐和决定信用限额的公司单元;

      注重于您公司的急需,应收款能够选择集中的要么分散的信用政策来管理

      使用分散的信用政策,每一种公司代码能够为它的客户显明它本人的信用数据;

      四个售货团队只可以够分配给多个小卖部代码,七个工作交易只好够分配给一个信用控制范围;

集聚的集体结构Centralized Organization

      在集聚的团协会结构中,集团代码组合到信用管理的三个信用控制范围;通过那种办法,你能够为客户执行跨集团代码的信用管理;

  信用控制范围的货币-分散的Currency of Credit Control Area-Decentralized

      各样信用控制范围设置了1个缺省的钱币;

      下列的缩写在这几个科目中会用到:

          CCA=Credit control area

          CCd=Company code

信用控制范围的货币-集中的Currency of Credit Control Area-Centralized

      假若信用控制范围包罗的店堂代码的地方货币分化于信用控制范围的货币,则应收款会按信用控制范围的钱币重新总计;

      任何未清的订单,交货也许Billing价值也都会按信用控制范围的钱币重新总计;

规定信用控制范围Determining the Credit Control Area

      到4.0本子,附加的正式可以影响信用控制范围的规定;显著依照如下顺序执行:

    1.      用户出口(EXIT_SAPFV45K_001);

    2.      来自付款人主记录的销售限制段(Credit control area 田野同志in Billing view);

    3.      销售限制

    4.  销售团队的商家代码

      通过集团代码来确认是先前可用的作用,那种情势的分红任然设置为规范的;

      唯有来自销售订单的抬头数据会被用户出口考虑;

      只有在并未持续凭证存在的时候才得以修改信用控制范围;

单个客户或客户组信用限额Credit Limit for Individual Customers or Groups
of Customers

      为公司统一内定信用数据是大概的;那么些合并的多寡,例如危机连串和信用限额,对持有成员集团都使得;

      全数成员公司的未清订单价值和应收款在多个通用信用艺术学科中管理;

      MARK:A credit limit for a group of customers is independent of
the question of payment,in other words the members assigned to a
central credit account can be independent as far as payment is
concerned;

新客户的信用限额Credit Limit for New Customers

      在事情场景A,若是还没有为客户输入信用数据,则不会履行信用控制;

      在工作场景B,马上为新客户分明信用数据,这代表信用控制从一发轫就执行;

      你可以在信用控制范围的陈设中决定危害类别的电动分配,销售代表组和信用限额;

是到水的题,不难点在于其只要求一对lca即可,那是比较简单的。

[原创] SD从零先导52 信用范围数据爱惜

中间地分开信用控制范围Dividing credit control areas internally

       你能够在叁个信用控制范围内创立信用代表组;

      
在销售订单中输入一个分配给客户的信用代表组;然后它可用作分析或许释放成效中的接纳规范;

       你能够在信用代表组中钦赐哪些职员和工人会保持邮件布告;

分类客户Classifying customers

      
你能够依照客户展现的信用风险分配三个风险体系给他们以分类和进行信用检查;

       危害连串决定在订单和交货处理中会执行如何信用检查;

      
使用客户信用控制组,你可以遵照你公司的特定要求将客户分组(例如,按行业或按国家);信用代表可利用这个组来为追思和总结分析生成锁住的证据;

      
能够在告知中肆意地定义和包含客户分组;使用那种艺术,信用代表能够按行业也许产品组分组客户;

汇总数据和各信用控制范围数据Central Data and Data in each Credit Control
Area

       总信用限额

          
使用总信用限额,你决定贰个客户在全数信用控制范围内允许的信用限额;全体信用控制范围内的信用限额的和不可能当先总信用限额;

       最大单个信用限额

          
最大单个信用限额限制了某些特定的信用控制范围的信用限额;在那种气象下,你不是为某些信用控制范围控制一个特定的信用限额而最好是二个同意的信用限额;

       单个信用限额

          
用单个信用限额,你能够为三个客户在某些信用控制范围内分明贰个一定的信用限额;该允许的单个限额必须没有超过最大单个信用限额;当建立贰个信用控制范围时你能够为单个信用限额钦赐3个暗中认可值;当您在铺子代码中创立3个客户同时该暗许值已经安装了,系统会自行地给该客户分配多少个分配多少个恰如其分的信用限额;用别的的话说系统会创制合适的信用主记录;

参照日期Reference Dates-Check Dates

       下次中间检查日期(Next Internal
Review)允许你为客户输入三个日期,在该日期信用限额会再度评估;

       假使该日期已经抵达只怕逾期,它不会像下次检讨字段(next
check)那样导致自动信用检查的打招呼信息;

       上次里边防检查查日期可用来在信用预览和信用主数据表中的选拔和排序;

首要看了以下blog

[原创] SD从零起始53 自动信用控制

信用检查可实施的时间点Points At Which a Credit Check Can Be Carried Out

      
使用系统安装来钦赐你想怎么时候实施信用检查;你大概,例如,供给只在销售订单处理进度中施检;

      
只要相关的凭据被信用检查block了,销售和装运中的后续的效用就不可能实行;

      
在发货时实行的检讨不可能再block该交易,因为发货是装运的末梢的功用;即便在发货时实行了信用检查并且交货抢先了信用限额,它不会为交货记账;系统一发布行三个错误新闻;

机关设置Automatic Settings

      
客户的信用控制范围,危机连串,以及工作交易都震慑机关信用检查的连串和界定;

      
信用组组合在信用检查中以平等方法处理的差别的作业处理;那个信用组被分配给会为其推行信用限额检查的销售凭证类型和交货凭证类型;

      
你为每一种条目种类决定,是或不是该条款类其余条文包罗在信用功用中(检查和翻新未清信用价值);在信用检查中会被考虑的条款类别的字段“active
recievables”必须激活;

反省项目预览Overview of Check Types

      
你也得以从机动信用控制的的主宰表中调用一个反省,该检查可在用户出口中编制程序;

       愈多的新闻参考在线实施指南:Sales and Distribution System
modifications User exits-> User exits for credit checks and risk
management;在此间你能够找到1个程类别表,在先后中您须求定义不相同于标准设置的反省;

静态和动态检查Static and Dynamic Checks

      
客户信用揭露能够分开为一个静态部分(未清项,未清比林价值和交货价值)以及二个动态部分(未清订单价值);

      
    未清订单价值包含全体片段交货或未交货的订单;它按在叁个肆意定义的时光或时期单位(日,周,月)的音信结构内的物料可用日期累计;

          
当定义信用检查,你钦定有些数据的对应时期,从那一个时期会规定一未来日期;

           这样保障了陈设在今后的销售订单在分明信用表露时不会被考虑;

       该例子中的“actual
date”是在信用水平轴上明确未清订单价值的起始日期;“actual
date”是种种检查的此时此刻日子;在一张订单中,该日期是订单创造或修改的日期;在交货中,该日期是交货创造或改动的日子;

反省最大证据价值Checking Against 马克西姆um Document Values

      
销售订单或交货价值恐怕否超过信用检查中定义的特定值;该价值贮存为信用控制范围的钱币;那对于尚未为其定义信用限额的新客户尤其适用;你能够应用二个为新客户定义的高风险种类来运行该检查;

   检核查重点字段的改动Checking Against Changes in Critical Fields

      
付款条件,固定起息日和额外固定起息日定义为主要字段;该检查用于监察和控制客户主记录中这几个暗中认可值的修改;

       近来不得以定义越来越多的首要字段;

      
记住,当您执行那连串型的检查时,系统不可能辨别是对客户有利的或然不利的改动;每便对客户主记录中的这么些暗中同意值的修改都会调用该信用检查;

反省下次检查日期Check Against Next Review Dates

       在此间,你不需求钦点许多天机,没有这一个“buffer
days”,只要系统精晓下一检查日期已经抵达,系统就会履行检查;

反省未清项Checking Against Open Items

      
超越某一天数的未清项和客户余额之间的涉及恐怕是不能够当先某99分比;

     
 延期未支付的运气从付款的标准日期伊始测度,用其余的话说,假设付款条件是净30天,则系统仅始发盘算30天时间内的推迟未支付的造化;

反省催款等级的最大数据Checking Against the 马克西姆um Number of 邓恩ing
Levels

       在客户主数据的营业所代码数据中存款和储蓄当前的催款等级;

http://blog.csdn.net/hnust\_xiehonghao/article/details/9109295

[原创] SD从零伊始54 信用控制-阻止后续效应

订单的接轨效应Subsequent Functions for Orders

      
标准版本包括预定义的要求条件,它们确认销售和分销凭证的信用景况;假若证据是锁住的,则这个要求条件是不满足的;

       要求条件是用来阻拦锁住的订单只怕交货的接轨效应的施行;

       你不可能不首先在布局中为各类条件和对应的接二连三效应拓展适当的安装;

      
确定保证为全自动信用控制在检查规则中装置的锁标识符只有在一个对应的供给条件也在证据中认同了那些标识符时才会被激活;

      
那允许你控制在您公司中当一张凭证被锁住时怎么着后续效应被允许恐怕阻止;

      
MAOdysseyK:你能够阻挡为叁个交货创造确认的多少,可是须求传输无论怎么着都会生出;那是因为一旦在大部状态下三个交货会在将来某暂且点起先;

一连交货作用Subsequent Delivery Functions

      
像订单一样,交货也保有许多的接二连三效应,那一个效应能够在被信用检查锁住的交货中接纳相应的须要条件来阻拦;

要点在于

1.用并查集维护。

2.亟须是离线的,在线特别。

3.存边能够用vector,比较方便,毕竟边不多。

*4.rank方可完结启发式并查集,能够优化一些年华。

5.anse数组是存祖先的,因为并查集维护,所以只需一步更新即可。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<string>
 6 #include<cstring>
 7 #include<vector>
 8 const int size=10007;
 9 
10 int n,f[size],anse[size],in[size],rank[size],vis[size];
11 using namespace std;
12 vector<int> node[size],que[size];
13 void init();
14 int find(int num);
15 void conbine(int aa,int bb);
16 void lca(int root)
17 {
18     int i,sz;
19     anse[root]=root;
20     sz=node[root].size();
21     for (int i=0;i<sz;i++)
22     {
23     //    if (fa!=node[root][i])
24     //    {
25             lca(node[root][i]);
26             conbine(root,node[root][i]);
27             anse[find(node[root][i])]=root;
28     //    }
29     }
30     vis[root]=1;
31     sz=que[root].size();
32     for (int i=0;i<sz;i++)
33     {
34         if (vis[que[root][i]])
35         {
36             printf("%d\n",anse[find(que[root][i])]);
37             return;
38         }
39     }
40 }
41 int main()
42 {
43     int cas,i;
44     scanf("%d",&cas);
45     while (cas--)
46     {
47         int x,y;
48         scanf("%d",&n);
49         init();
50         for (int i=1;i<=n-1;i++)
51         {
52             scanf("%d%d",&x,&y);
53             node[x].push_back(y); 
54             in[y]++;
55         }
56         scanf("%d%d",&x,&y);
57         que[x].push_back(y);
58         que[y].push_back(x);
59         for (y=1;y<=n;y++)
60         {
61             if (in[y]==0) break;
62         }
63         lca(y);
64     }
65 }
66 void init()
67 {
68     int i;
69     for (int i=1;i<=n;i++)
70     {
71         node[i].clear();
72         que[i].clear();
73         f[i]=i;
74         rank[i]=1;
75     }
76     memset(vis,0,sizeof(vis));
77     memset(in,0,sizeof(in));
78     memset(anse,0,sizeof(anse));
79 }
80 int find(int num)
81 {
82     if (f[num]!=num) f[num]=find(f[num]);
83     return f[num];
84 }
85 void conbine(int aa,int bb)
86 {
87     int x=find(aa),y=find(bb);
88     if (x==y) return;
89     if (rank[x]<=rank[y])
90     {
91         f[x]=y;
92         rank[y]+=rank[x];
93     }
94     else
95     {
96         f[y]=x;
97         rank[x]+=rank[y];
98     }
99 }

求在线算法要用倍增lca